我正在嘗試構建一個允許搜索多維數組的函數,其中每個子數組都匹配多個條件。我遇到了一種奇怪的行為,無法弄清楚為什么會這樣。以下是導致問題的一般邏輯。我在 PHP 7.4 上運行它是為了它的價值。最終的鍵數組 ( $keys2) 應該與第一個鍵數組( ) 匹配$keys,但它失去了與預期索引的關聯??磥?PHP 忽略了我給定的 int 索引,array_keys()而是在最終調用中使用了未見過的 0 索引索引。$array = [ ['one' => 'aa', 'two' => 'qq'], ['one' => 'bb', 'two' => 'qq'], ['one' => 'aa', 'two' => 'qq'], ['one' => 'bb', 'two' => 'qq'], ['one' => 'aa', 'two' => 'qq'],];$keys = array_keys(array_column($array, 'one'), 'aa');$array2 = array_filter($array, static function($key) use ($keys) { return in_array($key, $keys, true);}, ARRAY_FILTER_USE_KEY);$keys2 = array_keys(array_column($array2, 'two'), 'qq');echo '<pre>';var_dump($array, $keys, $array2, $keys2);echo '</pre>';以上輸出:/var/www/test.php:array (size=5) 0 => array (size=2) 'one' => string 'aa' (length=2) 'two' => string 'qq' (length=2) 1 => array (size=2) 'one' => string 'bb' (length=2) 'two' => string 'qq' (length=2) 2 => array (size=2) 'one' => string 'aa' (length=2) 'two' => string 'qq' (length=2) 3 => array (size=2) 'one' => string 'bb' (length=2) 'two' => string 'qq' (length=2) 4 => array (size=2) 'one' => string 'aa' (length=2) 'two' => string 'qq' (length=2)/var/www/test.php:array (size=3) 0 => int 0 1 => int 2 2 => int 4/var/www/test.php:27:array (size=3) 0 => array (size=2) 'one' => string 'aa' (length=2) 'two' => string 'qq' (length=2) 2 => array (size=2) 'one' => string 'aa' (length=2) 'two' => string 'qq' (length=2) 4 => array (size=2) 'one' => string 'aa' (length=2) 'two' => string 'qq' (length=2)/var/www/test.php:array (size=3) 0 => int 0 1 => int 1 2 => int 2
1 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
<?php
$array = [
['one' => 'aa', 'two' => 'qq'],
['one' => 'bb', 'two' => 'qq'],
['one' => 'aa', 'two' => 'qq'],
['one' => 'bb', 'two' => 'qq'],
['one' => 'aa', 'two' => 'qq'],
];
$keys = array_keys(array_column($array, 'one'), 'aa');
$array2 = array_filter($array, static function($key) use ($keys) {
return in_array($key, $keys, true);
}, ARRAY_FILTER_USE_KEY);
$keys2 = array_keys(array_combine(array_keys($array2), array_column($array2, 'two')), 'qq', true);
echo '<pre>';
var_dump($array, $keys, $array2, $keys2);
echo '</pre>';
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消