2014-03-24 96 views
-3

首先,我很抱歉,请温柔一点,我只是学习PHP,我坐下来编写我的基本cms只是为了练习,但我卡住了。PHP返回数组中的主键值

我有一个网站设置的桌子上包含以下

option   | option_value  | setting 
site_name  | My site name  | general 
site_description | My site description | general 
site_keywords | My site keywords | general 

我做了以下选择

"$results = SELECT FROM settings WHERE setting VALUES general" 

我foreach循环

foreach ($results as $result) 
     { 

      var_dump($result); 
     } 

我找回以下来自我的foreach循环的结果

array(3) { 
    ["option"]=> 
    string(16) "site_description" 
    ["option_value"]=> 
    string(17) "My site description " 
    ["setting"]=> 
    string(7) "general" 
} 
array(3) { 
    ["option"]=> 
    string(13) "site_keywords" 
    ["option_value"]=> 
    string(14) "My site keywords " 
    ["setting"]=> 
    string(7) "general" 
} 
array(3) { 
    ["option"]=> 
    string(9) "site_name" 
    ["option_value"]=> 
    string(17) "My site name" 
    ["setting"]=> 
    string(7) "general" 
} 

我的问题是,有没有办法回到这样

["option"]=> 
    string(16) "site_description" 
    ["option_value"]=> 
    string(17) "My site description " 
    ["setting"]=> 
    string(7) "general" 

    ["option"]=> 
    string(13) "site_keywords" 
    ["option_value"]=> 
    string(14) "My site keywords " 
    ["setting"]=> 
    string(7) "general" 

    ["option"]=> 
    string(9) "site_name" 
    ["option_value"]=> 
    string(17) "My site name" 
    ["setting"]=> 
    string(7) "general" 

结果,以便去除阵列(3)指数和加入他们的行列?抱歉,因为我的英语。也许这不是正确的词,我在网上搜索了很多,但没有找到任何解决方案。

请问有人能帮忙吗?

编辑

所以,正如我所说的

的foreach($结果$结果) {

var_dump($result); 
} 

我取回从我的foreach循环的结果如下

array(3) { 
    ["option"]=> 
    string(16) "site_description" 
    ["option_value"]=> 
    string(17) "My site description " 
    ["setting"]=> 
    string(7) "general" 
} 
array(3) { 
    ["option"]=> 
    string(13) "site_keywords" 
    ["option_value"]=> 
    string(14) "My site keywords " 
    ["setting"]=> 
    string(7) "general" 
} 
array(3) { 
    ["option"]=> 
    string(9) "site_name" 
    ["option_value"]=> 
    string(17) "My site name" 
    ["setting"]=> 
    string(7) "general" 
} 

所以我想L尝试去解释,因为我需要将结果传递变量

所以,当我循环这样

foreach ($results as $result) 
    { 
     var_dump($result['site_name']) ; 
     } 

所以,当我在想添加SITE_NAME指数显示,指数期权价值,但如果我这样做这样我得到未定义的索引:site_name

+1

不,因为在考试你想要你有多个相同的密钥行,这是不可能的(选项=> site_description,option => site_name ...) –

+0

而不是使用mysql_fetch_array使用mysql_fetch_assoc – Dimitri

+0

你可以举个例子你想要的结果?你究竟需要的数组结果看起来像什么? –

回答

0

不,你不能。你可以加入他们,但你不会得到你想要的结果,因为你将有三个元素具有相同的键。你将如何使用第二个元素选项?不可能。

如果是需要的话,是有疑问的。

我建议你重新考虑你为什么要这样做。也许你认为自己的问题没有得到这样的数组是可以解决的。

如果您想要(如注释中所述)是一个数组,每个选项都包含option_value,那么您可以首先重新排列数组。

$newArray = array(); 
foreach ($results as $result) 
{ 
    $newArray[ $result['option'] ] = $result['option_value']; 
} 
var_dump($newArray); 

编辑:读你的编辑你,看来你的问题是,你不知道如何访问您的数组数据。

你有这样的数组:

array(3) { 
    ["option"]=> 
    string(9) "site_name" 
    ["option_value"]=> 
    string(17) "My site name" 
    ["setting"]=> 
    string(7) "general" 
} 

,并尝试这种方式存取权限是:

var_dump($result['site_name']); 

但“SITE_NAME”是一个数值,存储下的键“选项”阵列中。

那么你认为$result['site_name']的内容是什么? 如果你想得到“我的网站名称”,你必须在'site_name'的阵列上调用$result['option_value']。 我上面的解决方案重新排列你的数组,给你你想要的acces,你说这不是你想要的。 你想要什么?

+0

什么即时尝试达到var_dump($结果);如果我通过索引像var_dump($结果['site_name']);它会返回实际的option_value –

+0

啊....好吧..一会儿。检查编辑我的答案。 –

+0

感谢您的帮助,但没关系,这不是我想要的,谢谢您的时间 –