【问题标题】:How can I output a value from an array? [duplicate]如何从数组中输出值? [复制]
【发布时间】:2019-01-22 04:28:28
【问题描述】:
array(7) {
  [0]=>
  array(2) {
    ["name"]=>
    string(14) "form[username]"
    ["value"]=>
    string(1) "1"
  }

  [1]=>
  array(2) {
    ["name"]=>
    string(15) "form[is_active]"
    ["value"]=>
    string(1) "1"
  }

  [2]=>
  array(2) {
    ["name"]=>
    string(8) "form[id]"
    ["value"]=>
    string(1) "9"
  }
 }

我想从数组中获取 id。我想要达到的输出是9

我的做法:

echo $array['form[id]'];

但我没有得到输出。

【问题讨论】:

  • 您的 id 是值字符串的一部分,不是索引键 ..
  • 循环遍历你的数组并检查array_key_exists()
  • 没有循环就不能这样吗?
  • 无论位置如何,您的输出都必须为 9 吗?
  • 如果如你所说我不能取“2”之类的数字,因为在某些情况下,id 不在位置 2 那么你将不得不循环并检查数组发生$a["name"] == 'form[id]'

标签: php arrays


【解决方案1】:

当您使用$array['form[id]']; 时,您正在寻找名为“form[id]”的键,因为您的数组的键是 0、1 和 2,因此该键不起作用。您可以使用 $array[2]['value'] 获得所需的值.但是,这将始终调用数组的第二个元素,这可能不是您想要的。一个更动态的解决方案是这样的:

foreach ($array as $element) {
    if ($element['name'] == 'form[id]') {
        echo $element['value'];
        break;
    }
}

这将遍历整个数组并检查每个元素的名称。然后,当它与您想要的名称匹配时,它将打印该确切元素的值。

【讨论】:

  • 你可能想在发现它停止迭代后break;
  • 好点。已添加!
【解决方案2】:

最简单的方法可能是首先使用array_column 重新索引数组。然后可以使用name字段作为key:

$array = array_column($array, null, 'name');

echo $arr['form[id]']['value'];
// 9

https://3v4l.org/L1gLR

【讨论】:

  • 那是要走的路:),虽然我发现没有像他这样使用数组的必要,但他可以像3v4l.org/puGKm一样简单地做@
【解决方案3】:

您可以使用 foreach 并检查内容.. 但索引“名称”的内容只是一个字符串 form[id] 无论如何

foreach( $myArray AS $key => $value){

   if ($value['name'] == 'form[id]' ) {
      echo $key;
      echo $value;

   }


}

【讨论】:

  • 你可能想在发现它停止迭代后break;
  • @Xatenev 谢谢.. 是有效的建议.. 正确.. OP 可以在匹配时使用 break 来结束迭代
【解决方案4】:

您试图获取值,就好像它是一个 associative array(有时称为字典或映射),但它是一个普通数组或索引数组。

调用$array[2]["value"]获取你想要的值

还可以使用一些更高级的函数,例如array_search;那么你可以使用:

$id = array_search(function($values) {
  return $values['name'] == 'form[id]';
}, $array)["value"];

【讨论】:

  • 问题是,我不能取像“2”这样的数字,因为在某些情况下,id 不在位置 2
  • 嗯,是的,那么当name 的值为form[id] 时,您应该遍历数组并获取value
【解决方案5】:

所以我认为您需要先过滤数组以找到您需要的元素,然后输出该元素的值:

$filtered_array = array_filter($your_array, function(element){
   return element['name'] == 'form[username]';
});

if (!empty($filtered_array)) {
   echo array_pop($filtered_array)['value'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2020-03-31
    • 1970-01-01
    • 2018-02-13
    • 2014-01-07
    相关资源
    最近更新 更多