【问题标题】:if an array default is true, how to display his content?如果一个数组默认为真,如何显示他的内容?
【发布时间】:2015-07-27 16:28:03
【问题描述】:

如果我有一个具有以下结构的数组:

$currencies = Array (7)
   0 => Array (3)
       id => "11"
       code => "CHF"
       default => "0"
   1 => Array (3)
       id => "13"
       code => "USD"
       default => "0"
   2 => Array (3)
       id => "12"
       code => "EUR"
       default => "1"

我想在默认值等于“1”时检索“代码”,例如:

if($currencies.default == 1 ){
$currency_code = EUR
}

这只是我意图的一个粗略示例,我不知道该怎么做。谁能帮帮我?

【问题讨论】:

  • default =>1 的数组是否不止一个?

标签: php arrays multidimensional-array associative-array


【解决方案1】:

这应该适合你:

首先,您使用array_filter() 遍历每个元素并过滤掉所有没有default => 1 的子数组。

在此之后,只需使用 array_column() 从之前的过滤数组中抓取列 code,例如

<?php

   $result = array_column(array_filter($currencies, function($v){
       return $v["default"] == 1;
   }), "code");

   print_r($result);

?>

输出:

Array
(
    [0] => EUR
)

【讨论】:

  • 致命错误:调用未定义的函数 array_column() 我对此很傻:S
  • @ValerieCastle 您的 PHP 版本 (echo phpversion();) 低于 array_column() 更改为array_map(),例如$result = array_values(array_map(function($v){ return $v["code"]; }, array_filter($currencies, function($v){ return $v["default"] == 1; })));
  • @ValerieCastle 那么这个问题我们在哪里?
【解决方案2】:

尝试使用array_filter()。示例:

$result = array_filter($currencies, function($v){return $v['default'] == 1 ? $v['code'] : false;});

print '<pre>';
print_r($result);
print '</pre>';

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2017-01-28
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多