【发布时间】:2019-08-20 12:02:54
【问题描述】:
我有如下数组 $DATA
{
"LSP": "EXB",
"AWB": "8421604",
"SCANS": [
{
"SCAN_TIME": "2019-07-17 20:05:00",
"SCAN_STATUS": "Uploaded",
"SCAN_CODE": "001",
"SCAN_LOCATION": "DLH"
},
{
"SCAN_TIME": "2019-07-18 15:52:00",
"SCAN_STATUS": "Picked Up",
"SCAN_CODE": "0011",
"SCAN_LOCATION": "DLH"
},
{
"SCAN_TIME": "2019-07-19 00:22:00",
"SCAN_STATUS": "Scanned",
"SCAN_CODE": "003",
"SCAN_LOCATION": "GAX"
}
]
}
$CODES = array("0011","003");
现在我想从 $DATA
中搜索 $CODES 中的 SCAN_CODE 值所以使用 array_search 同样会返回错误。 我目前获取 KEY 的代码是
$SEARCH_KEY = array_search($CODES,array_column($DATA,"SCAN_CODE"));
$SEARCH_KEY 返回
假
我的要求是获得 first INDEX VALUE,即使 SCAN_CODE 有多个具有相同 VALUE 的 INDEXES,我猜 array_search 只返回第一个实例。
【问题讨论】:
-
如果仔细观察,SCANS 包含对象数组,要使用 array_search 函数,您需要先将其转换为数组
-
$DATA无法使用 array_column。在$DATA['SCANS']上使用它应该可以工作。请发布一个有效的 json。 -
@Andreas 注意:未定义索引:SCANS 警告:array_column() 期望参数 1 是数组 警告:array_search() 期望参数2为数组
-
是的,那是因为您的 json 无效。发布真正的json
-
@Andreas 还有,array_search("003",array_column($DATA,"SCAN_CODE"));工作完美,因为它是正在搜索的字符串。但它不适用于 $CODES 代替“003”
标签: php arrays multidimensional-array