php - 在多维php数组中查找字符串(键)
问题描述
我有这个数组,我试图在 sku 匹配到“Testproduct_2327”时获取“id”。
我不确定如何实现这一点。
$main_array = array (
'status' => true,
'response' =>
array (
'code' => 200,
'result' =>
array (
'products' =>
array (
0 =>
array (
'id' => '0242e39e-bf20-11eb-fc6f-4cc6b4b8af34',
'sku' => 'Testproduct_0'
),
1 =>
array (
'id' => '0242e39e-bf20-11eb-fc6f-4cc6b6682978',
'handle' => 'vend_2327handle',
'sku' => 'Testproduct_1'
),
2 =>
array (
'id' => '0242e39e-bf20-11eb-fc6f-4cc6d31d1d02',
'handle' => 'vend_2327handle',
'sku' => 'Testproduct_2327',
),
),
),
)
);
我已经尝试过了,但它不起作用
array_walk_recursive($main_array, function ($item, $key) {
if($key == "sku" && $item == "Testproduct_2327"){
echo $item;
}
});
对此有什么想法吗?php 编译器 - https://rextester.com/AKIXIC51695
谢谢
解决方案
你快到了。您只需使用传递引用将 ID 变量传递给回调,以便在其范围内操作相同的 ID,如下所示:
<?php
$id = '';
array_walk_recursive($main_array, function ($item, $key) use (&$id){
//echo "$key holds $item\n";
if($key === 'id'){
$id = $item;
}else if($key == "sku" && $item == "Testproduct_2327"){
echo $id;
}
});
对于动态变量,您可以执行以下操作:
<?php
$id = '';
$compare_sku = 'Testproduct_2327';
array_walk_recursive($main_array, function ($item, $key) use (&$id,&$compare_sku){
//echo "$key holds $item\n";
if($key === 'id'){
$id = $item;
}else if($key == "sku" && $item == $compare_sku){
echo $id,"<br/>";
}
});
推荐阅读
- angular - Angular - 如何为 mat-tab 中的不同选项卡创建单独的“ViewContainerRef”容器
- c# - SpeechRecognizer的Windows 10 iot核心语言安装
- java - 如何在 Java 中使用带有通用节点的循环双链表编写删除方法
- javascript - 为什么我的功能支持测试在语法错误发生之前没有运行?
- usb - USB 行为与预期不符
- freemarker - 如果是相同输出的两倍,我如何删除列表的某些部分?
- javascript - d3.js 条形图不显示条形
- flutter - 颤动的android x问题怎么办
- java - 如何在 Windows 10 上使用 Java 判断 wifi 或蜂窝连接
- sql-server - 尝试从 udl 测试文件连接到 SQL Server 2016 时出现 SSL 安全错误