При создании фида 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
Если есть лучший способ сделать это, я весь слух. Заранее спасибо!
Вы можете сделать что-то вроде этого:
$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
Боюсь, вам придется прибегнуть к поиску массивов.
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.
Создайте функцию для поиска ключа:
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);