2012-04-08 3 views
2
$array = array(
    array(
     'key1', 
     'text 1 text 1 text 1' 
    ), 

    array(
     'key2', 
     'text 2 text 2 text 2' 
    ), 

    array(
     'key3', 
     'text 3 text 3 text 3' 
    ) 
); 

Извините за заголовок, его довольно сложно объяснить без примера.PHP: выберите ребенка из массива

Пользователь хочет прочитать текст. Например, текст key2. Поэтому, когда ввод key2, я хочу отобразить текст: text 2 text 2 text 2.

Но как я могу выбрать этот текст с помощью PHP?

ответ

4

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

$array = array("key1" => "text 1 text 1", 
       "key2" => "text 2 text 2", 
       "key3" => "text 3 text 3"); 

//now use this: 
echo $array["key2"]; 

Если вы не можете манипулировать массив, вы можете использовать цикл для создания массива, как описано выше:

$newArray = array(); 
foreach($array as $sub){ 
    $newArray[$sub[0]] = $sub[1]; 
} 

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

+0

Это было бы чертовски намного проще, но я не могу этого сделать, так как она идет прямо из базы данных. – Thew

+0

Я обновил свой ответ с помощью решения для создания массива, как я уже говорил. –

1

Если вам нужно динамически получить желаемый ключ, вам нужно будет перебирать массив и матч хотели «ключа»:

$wanted = "key2"; 
$text = NULL; 

foreach ($array as $V){ 
    if ($V[0] == $wanted){ 
     $text = $V[1]; 
     break; 
    } 
} 

Как @lex предположил, что это действительно хорошая идея, чтобы реорганизовать целевой массив ...

3

Поскольку это происходит из вашей базы данных (согласно вашему комментарию), это зависит от того, как часто вам нужно это делать.

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

Таким образом, для одного взгляда вверх, вы могли бы сделать

function find_key($arr, $needle) 
{ 
    foreach ($arr as $el) 
    { 
    list($key,$value) = $el; 
    if ($needle == $key) 
     return $value; 
    } 
    return false; 
} 

print find_key($array, 'key2'); // returns "text 2 text 2 text 2". 
+1

Хороший комбинированный ответ двух представленных вариантов, +1 –

Смежные вопросы