2012-04-08 19 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]; 
} 

これは、キーが常に最初の要素で、テキストが2番目の要素であることが確実な場合にのみ機能します。

+0

を行うことができます。 – Thew

+0

私はそれを言及したように配列を作成するためのソリューションで私の答えを更新しました。 –

1

あなたが動的に指名手配キーを取得する必要がある場合は、アレイとの一致が「キー」を望んでいたを反復処理する必要があります。@Lex。それは本当に、ターゲット配列をリファクタリングすることをお勧めします示唆したように

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

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

...

3

あなたのデータベースのように(コメントごとに)、それはあなたがそれを行う必要があるかどうかによって異なります。

アレイ全体を再フォーマットするには時間がかかりますが、後でルックアップを高速化するか、配列を繰り返してキーを見つけるだけの2通りの方法があります。以前のソリューションは、複数のルックアップを行う必要がある場合に最適です。後者は、単一のルックアップに最適です。

ので、単一のルックアップのために、あなたはずっと楽の地獄だろうが、それはデータベースからまっすぐ来ているので、私は、それを行うことはできません

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

提示された2つのオプション+1 –