我有一個陣列并搜索值 100 - 結果應該給我陣列的鍵。這像這樣作業:
$myArray = array(
array(
'score' => '100',
'name' => 'Sam',
'subject' => 'Data Structures'
),
array(
'score' => '200',
'name' => 'Tanya',
'subject' => 'Advanced Algorithms'
),
array(
'score' => '300',
'name' => 'Jack',
'subject' => 'Distributed Computing'
)
);
$id = array_search('100', array_column($myArray, 'score'));
但是現在“列”分數也應該是一個陣列:
$myArray = array(
array(
'score' => array('100','200'),
'name' => 'Sam',
'subject' => 'Data Structures'
),
array(
'score' => array('300','400'),
'name' => 'Tanya',
'subject' => 'Advanced Algorithms'
),
array(
'score' => array('500','600'),
'name' => 'Jack',
'subject' => 'Distributed Computing'
)
);
但是現在我的 array_search 部分不起作用。我該如何解決這個問題?
uj5u.com熱心網友回復:
這與您的第一個塊的作業方式完全相同
$id = array_search(100, array_merge(array_column(array_column($myArray, 'score'), 0), array_column(array_column($myArray, 'score'), 1)));
或者你可以這樣寫以提高可讀性
$tempArray1 = array_column(array_column($myArray, 'score'), 0);
$tempArray2 = array_column(array_column($myArray, 'score'), 1);
$myArray2 = array_merge($tempArray1, $tempArray2);
$id = array_search('100', $myArray2);
uj5u.com熱心網友回復:
您可以使用array_filter然后in_array在scores鍵上使用,從而回傳值為 的陣列100。
array_filter($myArray, fn($v) => in_array(100, $v['score']));
輸出:
array(1) {
[0]=>
array(3) {
["score"]=>
array(2) {
[0]=>
string(3) "100"
[1]=>
string(3) "200"
}
["name"]=>
string(3) "Sam"
["subject"]=>
string(15) "Data Structures"
}
}
看到它在 3v4l 下作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/365840.html
上一篇:如何從陣列中洗掉重復項
