你可以建立兩個數組(一個帶有搜索值,另一個沒有)併合並它們。請記住,如果你想保持數字鍵,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