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'
    )
);

タイトルで申し訳ありませんが、例がないと説明するのは非常に困難です。

ユーザーはテキストを読みたいと思っています。たとえば、 のテキストkey2。したがって、入力が の場合key2、テキストを表示したい: text 2 text 2 text 2

しかし、PHPを使用してそのテキストを選択するにはどうすればよいですか?

4

3 に答える 3

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 番目の要素であることが確実な場合にのみ機能します。

于 2012-04-08T15:03:49.387 に答える
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".
于 2012-04-08T15:08:40.190 に答える
1

必要なキーを動的に取得する必要がある場合は、配列を反復処理して、必要な「キー」と一致させる必要があります。

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

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

@Lexが示唆したように、ターゲット配列をリファクタリングすることは本当に良い考えです...

于 2012-04-08T15:05:19.930 に答える