Php 按值搜索多维数组以查找父同级值
我有一个多维数组,我需要搜索一些特定的值,以下是数组:Php 按值搜索多维数组以查找父同级值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,我需要搜索一些特定的值,以下是数组: $Array = Array ( Array ( 'sibling' => 'Product 1', 'another_sibling' => 'not important', 'parent' => Array (
$Array = Array
(
Array
(
'sibling' => 'Product 1',
'another_sibling' => 'not important',
'parent' => Array
(
'0' => Array
(
'product-name' => 'Placeholder name 0',
),
'1' => Array
(
'product-name' => 'Placeholder name 1',
),
'2' => Array
(
'product-name' => 'Placeholder name 2',
)
)
),
Array
(
'sibling' => 'Product 2',
'another_sibling' => 'not important',
'parent' => Array
(
'0' => Array
(
'product-name' => 'Placeholder name 3',
)
)
)
);
现在,我想基于“product name”值获取“sibling”值,假设我有以下内容:
$RequestData = Array
(
'0' => 'Placeholder name 0',
'1' => 'Placeholder name 1',
'2' => 'Placeholder name 3',
);
我需要一个函数来获取$RequestData
并在$array
中搜索'sibling'值,然后返回如下内容:
产品1
- 占位符名称0
- 占位符名称1
- 占位符名称3
function find($RequestData , $array){
foreach ($RequestData as $item) {
foreach ($array as $key => $val) {
foreach ($val['parent'] as $key0 => $val0) {
if ($val0['product-name'] == $item) {
$result[] = array(
'product' => $val['sibling'],
'items' => array (
$item,
),
);
}
}
}
}
return $result;
}
尝试此功能:
function find($RequestData, $array)
{
$result = [];
$elementsReq = count($RequestData);
foreach ($array as $value)
{
$curProd = $value['sibling'];
$elem = [];
foreach ($value['parent'] as $parent)
{
for ($i=0; $i < $elementsReq; $i++)
{
if($parent['product-name'] == $RequestData[$i])
{
array_push($elem, $RequestData[$i]);
break;
}
}
}
$curProdArray = array
(
'sibling' => $curProd,
'products-name' => $elem
);
array_push($result, $curProdArray);
}
return $result;
}
请你把你的问题清楚明确地说出来。谢谢。我正在尝试对其父项下的每个项目进行排序,并删除所有其他内容。该数组将有多个不同的产品,每个产品都有多个项目,我希望能够根据其项目的名称获取产品名称,并在其父项标题下对搜索的项目进行正确排序
Array
(
[0] => Array
(
[sibling] => Product 1
[products-name] => Array
(
[0] => Placeholder name 0
[1] => Placeholder name 1
)
)
[1] => Array
(
[sibling] => Product 2
[products-name] => Array
(
[0] => Placeholder name 3
)
)
)