3 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
另一種方法是使用 有效地旋轉(zhuǎn)數(shù)組array_slice,將您想要的元素帶到開始處:
$first = 'apple';
$k = array_search($first, array_column($array, 'content'));
$array = array_merge(array_slice($array, $k), array_slice($array, 0, $k));
print_r($array);
輸出:
Array (
[0] => Array ( [id] => b [content] => apple )
[1] => Array ( [id] => c [content] => banana )
[2] => Array ( [id] => d [content] => cherry )
[3] => Array ( [id] => a [content] => lemon )
)

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
有兩種方法我可以想到這樣做。第一個(gè)是評論中的 Ultimater 建議提取匹配的行,然后排序,然后將行添加回...
$first = 'apple';
$array = [];
$array[]=array('id'=>'a', 'content'=>'lemon');
$array[]=array('id'=>'b', 'content'=>'apple');
$array[]=array('id'=>'c', 'content'=>'banana');
$array[]=array('id'=>'d', 'content'=>'chery');
$firstElement = array_search($first, array_column($array, "content"));
$row = $array[$firstElement];
unset($array[$firstElement]);
sort($array);
array_unshift($array, $row);
print_r($array);
第二個(gè)是使用usort和添加特定的子句,如果鍵首先匹配你想要的行,那么它總是會(huì)強(qiáng)制它到第一行......
$first = 'apple';
usort($array, function ($a, $b) use ($first){
if ( $a['content'] == $first) {
return -1;
}
if ( $b['content'] == $first) {
return 1;
}
return $a <=> $b;
});
print_r($array);
(我已經(jīng)使用<=>了 PHP 7+,如果您需要使用 PHP 5,還有其他選擇)。
如果您的評論表明不需要對其余數(shù)據(jù)進(jìn)行排序,那么應(yīng)該使用第一組代碼減去sort()。

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
另一種選擇 - 如果 id:content 是一對一的,我們可以按內(nèi)容索引數(shù)組,并與具有單個(gè)空“apple”鍵(或您要查找的任何內(nèi)容值)的數(shù)組合并。
$array = array_merge(['apple' => []], array_column($array, null, 'content'));
如果生成的字符串鍵不受歡迎,則可以使用 重新索引數(shù)組array_values
。
如果數(shù)組只包含 id 和 content 并且 id:content 實(shí)際上是一對一的,則鍵值對的“字典”將比這樣的行列表更容易處理,最好設(shè)置如果可能的話,以這種方式開始。
如果 id:content 不是一對一的,那么...沒關(guān)系。;-)
- 3 回答
- 0 關(guān)注
- 237 瀏覽
添加回答
舉報(bào)