你可以建立两个数组(一个带有搜索值,另一个没有)并合并它们。请记住,如果你想保持数字键,you should use the +
operator instead of array_merge
:
<?php
$array = array('zero', 'one', 'two', 'three');
$searched_values = array('one', 'two');
$array_first = $array_second = array();
foreach ($array as $key=>$value) {
if (in_array($value, $searched_values))
$array_first[$key] = $value;
else
$array_second[$key] = $value;
}
$array_end = $array_first + $array_second;
echo '<pre>'; print_r($array_end); echo '</pre>';
返回:
Array
(
[1] => one
[2] => two
[0] => zero
[3] => three
)
编辑:保持$searched_values
为了
在这种情况下,你只需要循环遍历值以建立一个已找到的值的数组,同时删除初始数组的条目:
<?php
$array = array('zero', 'one', 'two', 'three');
$searched_values = array('one', 'three', 'two');
$array_found = array();
foreach ($searched_values as $key=>$value) {
$found_key = array_search($value, $array);
if ($found_key !== false) {
$array_found[$found_key] = $value;
unset($array[$found_key]);
}
}
$array_end = $array_found + $array;
echo '<pre>'; print_r($array_end); echo '</pre>';
?>
返回:
Array
(
[1] => one
[3] => three
[2] => two
[0] => zero
)
@ roberto66它工作正常,但它也有一些问题,像元素 – Yassine
<顺序? $ array = array('zero','one','two','three'); $ searching_values = array('one','three','two'); $ array_first = $ array_second = array(); ($ array,$ key => $ value){ if(in_array($ value,$ searches_values)) $ array_first [$ key] = $ value;其他 $ array_second [$ key] = $ value; } $ array_end = $ array_first + $ array_second; print_r($ array_end); ?> – Yassine
而不是输出一个三个两个零它输出一个两个三个零 – Yassine