Поиск ключа / значения в многомерном массиве

При создании фида Google мне нужен способ вернуть ключ в моем многомерном массиве для возрастных групп на основе размеров:

$sizeArray = array("Newborn" => "0-3m",
"Infant" => array("3-6m", "6-12m"),
"Toddler" => array("12-18m", "18-24m", "2T", "3T", "4T", "5"),
"Kids" => array("6", "7", "8")
);

Я надеюсь, что это будет выглядеть примерно так:

findKey("18-24m", $sizeArray);

Который вернется: Toddler

Если есть лучший способ сделать это, я весь слух. Заранее спасибо!

1

Решение

Вы можете сделать что-то вроде этого:

$sizeArray = array("Newborn" => "0-3m",
"Infant" => array("3-6m", "6-12m"),
"Toddler" => array("12-18m", "18-24m", "2T", "3T", "4T", "5"),
"Kids" => array("6", "7", "8")
);

foreach($sizeArray as $key => $array) {
if(is_array($array)) {
if(array_search('18-24m', $array)) {
echo $key;
}
}
}

Надеюсь, поможет! : D

0

Другие решения

Боюсь, вам придется прибегнуть к поиску массивов.

function findKey($size,$array) {
foreach($array as $groupName => $data) {
if(is_array($data)){                // first element is not an array...so check it.
if(in_array($size,$data)) {
return $groupName;
}
}elseif($size == $data){
return $groupName ;
}
}
return false;
}

Это будет искать каждый массив в вашем многомерном массиве для заданного размера, и вернет его имя, если размер найден. Если для данного размера группа не найдена, возвращается false.

0

Создайте функцию для поиска ключа:

function findKey($findKey, $array)
{
foreach($array as $key => $val)
{
if(in_array($findKey, $val))
return $key
}
return false;
}

теперь вы можете передать один массив и ключ в функцию, чтобы найти ключ, как показано ниже:

 $sizeArray = array("Newborn" => "0-3m",
"Infant" => array("3-6m", "6-12m"),
"Toddler" => array("12-18m", "18-24m", "2T", "3T", "4T", "5"),
"Kids" => array("6", "7", "8")
);
findKey("18-24m", $sizeArray);
0
По вопросам рекламы [email protected]