亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多維數組的多值搜索未在 PHP 中返回預期結果

多維數組的多值搜索未在 PHP 中返回預期結果

PHP
慕標琳琳 2022-12-23 10:09:06
我正在嘗試構建一個允許搜索多維數組的函數,其中每個子數組都匹配多個條件。我遇到了一種奇怪的行為,無法弄清楚為什么會這樣。以下是導致問題的一般邏輯。我在 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>';


查看完整回答
反對 回復 2022-12-23
  • 1 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號