PHP:从数组中选择子项

时间:2012-04-08 15:00:58

标签: php arrays

$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选择该文本?

3 个答案:

答案 0 :(得分: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];
}

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

答案 1 :(得分: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".

答案 2 :(得分:1)

如果您需要动态获取所需密钥,则需要迭代数组并匹配所需的“密钥”:

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

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

正如@Lex建议重构目标数组真的好主意......