php从数组中返回主键值

时间:2014-03-24 14:29:22

标签: php arrays

首先我很抱歉,请保持温和,我只是在学习php,我坐下来编写我的基本cms,只是为了练习,但我被卡住了。

我有一个包含以下内容的网站设置表

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"

那么删除array(3)索引并加入它们?抱歉,因为我的英文。也许这不是正确的词,我在网上搜索了很多,但没有找到任何解决方案。

有人可以帮忙吗?

修改

就像我说的那样

foreach($结果为$ 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"
}

所以我会尝试解释,因为我需要传递结果变量

所以当我以这种方式循环时

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

所以当我在想要显示索引选项值时添加site_name索引,但如果我这样做,我会得到未定义索引:site_name

1 个答案:

答案 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']的内容是什么? 如果你想获得"我的网站名称"你必须在持有$result['option_value']的数组上调用'site_name'。 我上面的解决方案会重新排列你的数组,为你提供你想要的访问权限,你说这不是你想要的。 你想要的是什么?