遍历PHP数组,优先选择要首先遍历的数组

时间:2019-02-15 21:57:46

标签: php arrays loops sorting foreach

我有一个简单的数组$arr,其键以ab-xy-开头,且顺序不同。我想先使用ab-和它们xy-遍历键。

$arr = [
    'ab-283' => 'Hi', // 1 (loop through this first)
    'xy-153' => 'Ok', // 5
    'ab-232' => 'Hello', // 2 (loop this through second...)
    'ab-164' => 'Cool', // 3
    'xy-164' => 'Hmm', // 6
    'ab-164' => 'Yo', // 4
    'xy-164' => 'Yup' // 7
];

foreach ($arr as key => $value) {
}

这将是输出:

Hi
Hello
Cool
Yo
Ok
Hmm
Yup

那么,是否有先循环遍历ab-然后遍历xy-的地方?谢谢

2 个答案:

答案 0 :(得分:1)

如果您不希望按键对它进行完全排序(我想您不希望这样做,因为它不像您显示的输出中那样),那么我认为您只需要经历两次即可。

foreach (['ab', 'xy'] as $prefix) {
    foreach ($arr as $key => $value) {
        if (substr($key, 0, 2) == $prefix) {
            echo $value;
        }
    }
}

答案 1 :(得分:1)

您可以先按键对$ arr数组进行排序。

ksort($arr);

然后进行foreach。 您的数组多次具有相同的键(xy-164),因此输出结果与您发布的结果不同,而是:

array(5) {
  ["ab-164"]=>
  string(2) "Yo"
  ["ab-232"]=>
  string(5) "Hello"
  ["ab-283"]=>
  string(2) "Hi"
  ["xy-153"]=>
  string(2) "Ok"
  ["xy-164"]=>
  string(3) "Yup"
}