2012-04-08 33 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 2012-04-08 15:04:47

+0

我更新了我的答案,并提供了解决方案来创建阵列。 – 2012-04-08 15:06:03

1

如果您需要动态地获取想要的键,你会需要遍历数组和匹配通缉“关键”:作为@Lex建议它是真正重构目标磁盘阵列好主意

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

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

...

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 – 2012-04-08 15:11:22