Найти элемент в многомерном массиве по имени и вернуть значения в одном массиве - PullRequest
1 голос
/ 27 апреля 2011

У меня есть многомерный массив, подобный этому:

array(3) {
    [1]=> array(7) {
        ["label"]=> string(43) "I would like to receive PCN for ETXexpress:"
        ["name"]=> string(48) "ilts_I_would_like_to_receive_PCN_for_ETXexpress:"
        ["type"]=> string(8) "checkbox"
        ["wert"]=> string(2) "on"
        ["html_after"]=> string(0) ""
        ["label_after"]=> string(0) ""
        ["size"]=> string(0) ""
    }
    [2]=> array(7) {
        ["label"]=> string(50) "I would like to recieve PCNs for microETXexpress®"
        ["name"]=> string(55) "ilts_I_would_like_to_recieve_PCNs_for_microETXexpress®"
        ["type"]=> string(8) "checkbox"
        ["wert"]=> NULL
        ["html_after"]=> string(0) ""
        ["label_after"]=> string(0) ""
        ["size"]=> string(0) ""
    }
    [3]=> array(7) {
        ["label"]=> string(38) "I would like to recieve PCNs for ETX®"
        ["name"]=> string(43) "ilts_I_would_like_to_recieve_PCNs_for_ETX®"
        ["type"]=> string(8) "checkbox"
        ["wert"]=> NULL
        ["html_after"]=> string(0) ""
        ["label_after"]=> string(0) ""
        ["size"]=> string(0) ""
    }
}

Как я могу получить внутри него массив по его имени? Допустим, из массива, который содержит: ilts_I_would_like_to_recieve_PCNs_for_microETXexpress® значение wert?

Мне важно не указывать на это число в массиве.

Как лучше всего это сделать?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011
$data = array( /* your data */ );
$name = "ilts_I_would_like_to_recieve_PCNs_for_microETXexpress®"; // name you are looking for
$result = array();

foreach ( $data as $key => $value ) {
    if ( $value['name'] == $name ) {
        $result = $value;
        break;
    }
}
0 голосов
/ 19 июня 2011

почему вы не заменяете ключи массива (0, 1, 2 ...) на имена записей, поскольку они уникальны.Таким образом вы можете получить доступ к своим записям без поиска:

if (array_key_exists($name, $yourArray))
{
    // your code ..
}
0 голосов
/ 27 апреля 2011

Проверьте этот код, я думаю, что это должно работать.

<?PHP
$array = array( /* YOUR DATA */ );

$out = array();

foreach( $array as $a )
{
    if( $a['name'] == 'ilts_I_would_like_to_recieve_PCNs_for_microETXexpress®' )
    {
        $out = $a;
        break;
    }
}

print_r( $out );
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...