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];
}

仅当您确定键始终是第一个元素而文本始终是第二个时,这才有效。

于 2012-04-08T15:03:49.387 回答
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".
于 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 回答