【问题标题】:php returning primary key values from arrayphp从数组返回主键值
【发布时间】:2014-03-24 14:29:21
【问题描述】:

首先我很抱歉,请温柔,我只是在学习 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"

所以删除数组(3)索引并加入它们?对不起,因为我的英语。可能这个词不正确,我在网上搜索了很多,但没有找到任何解决方案。

有人可以帮忙吗?

编辑

正如我所说的

foreach ($results 为 $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 索引时想要显示该索引选项值,但如果我这样做,我会得到 Undefined index: site_name

【问题讨论】:

  • 否,因为在示例中,您希望多行具有相同的键,这是不可能的(选项 => 站点描述,选项 => 站点名称...)
  • 而不是使用 mysql_fetch_array 使用 mysql_fetch_assoc
  • 你能举一个你想要的结果的例子吗?您究竟需要数组结果是什么样的?
  • @user3058333,最好使用mysqli_ 函数或PDO。 mysql_ 已弃用。

标签: php arrays


【解决方案1】:

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

是否值得怀疑。

我建议您重新考虑一下为什么要这样做。也许你认为你遇到的问题不用得到这样的数组就可以解决。

如果您想要(如 cmets 中所述)是一个包含每个选项的 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' 是一个值,存储在数组中的键 'option' 下。

那么你期望$result['site_name']的内容是什么? 如果您想获得“我的站点名称”,您必须在持有'site_name' 的阵列上调用$result['option_value']。 我上面的解决方案确实重新排列了您的数组以提供您想要的访问权限,您说这不是您想要的。 你想要什么?

【讨论】:

  • 我想要实现的是 var_dump($result);如果我通过像 var_dump($result['site_name']); 这样的索引它将返回实际的 option_value
  • 感谢您的帮助,但没关系这不是我想要的,感谢您的宝贵时间
  • @WebStudent 我认为你偏离了轨道。
  • @WebStudent 我给我的答案写了一个编辑,因为我认为你根本不了解关联数组是如何工作的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多