I l*_*ing 8 php arrays associative-array
我必须处理重构,以减少PHP中的代码行数,以过滤关联数组.所以我在MySQL中选择DB,以获得一个关联数组.所以我的"对象"有一个类别和一个姓氏字段.
while ($row = mysqli_fetch_array($result)) {
$array[] = $row['category'];
$array[] = $row['Surname'];
}
Run Code Online (Sandbox Code Playgroud)
我想从这个数组中获取,就像许多其他子数组一样,按类别划分.我的意思是类别数组标识可能是:
$categories = array("A","B","C","D");
Run Code Online (Sandbox Code Playgroud)
所以我想要的是为每个类别获取一个数组,其中包含该类别的所有姓氏.所以假设该方法有效,如下所示:
$arrayFiltered = method_filter($array_asso,"A");
Run Code Online (Sandbox Code Playgroud)
最后我想要这样的东西:
foreach ($categories as &$value) {
$arrayFiltered = method_filter($array_asso,$value);
my_method_which_needs_the_filtered_array($arrayFiltered);
}
Run Code Online (Sandbox Code Playgroud)
预先感谢您的帮助.
中士的方法是最简单的。只是为了它,这里有一种方法array_filter()
(以防万一你还必须有一个未过滤的数组):
$array = [];
$categories = array("A","B","C","D");
while ($row = mysqli_fetch_array($result)) {
$item = [
'category' => $row['category'],
'surname' => $row['Surname']
];
$array[] = $item;
}
$categorized = [];
foreach ($categories as $category) {
$categorized[$category] = array_filter($array, function($item) use ($category) {
return $item['category'] == $category;
});
}
Run Code Online (Sandbox Code Playgroud)
这是不需要数据库连接的概念证明:
$categories = array("A","B","C","D");
$array = [
['category' => 'A', 'Surname' => 'A Name 1'],
['category' => 'A', 'Surname' => 'A Name 2'],
['category' => 'B', 'Surname' => 'B Name 1'],
['category' => 'B', 'Surname' => 'B Name 2'],
['category' => 'B', 'Surname' => 'B Name 3'],
['category' => 'C', 'Surname' => 'C Name'],
];
$categorized = [];
foreach ($categories as $category) {
$categorized[$category] = array_filter($array, function($item) use ($category) {
return $item['category'] == $category;
});
}
print_r($categorized);
Run Code Online (Sandbox Code Playgroud)
输出:
Array
(
[A] => Array
(
[0] => Array
(
[category] => A
[Surname] => A Name 1
)
[1] => Array
(
[category] => A
[Surname] => A Name 2
)
)
[B] => Array
(
[2] => Array
(
[category] => B
[Surname] => B Name 1
)
[3] => Array
(
[category] => B
[Surname] => B Name 2
)
[4] => Array
(
[category] => B
[Surname] => B Name 3
)
)
[C] => Array
(
[5] => Array
(
[category] => C
[Surname] => C Name
)
)
[D] => Array
(
)
)
Run Code Online (Sandbox Code Playgroud)