2015-07-27 6 views
0

, если у меня есть массив со следующей структурой:, если значение по умолчанию равно true, как отобразить его содержимое?

$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 
} 

Это было просто грубый пример моего намерения, я понятия не имею, как это сделать. Может кто-нибудь мне помочь?

+0

Есть ли более чем один массив с 'default => 1'? –

ответ

0

Это должно работать для вас:

Сначала вы пройти через каждый элемент с array_filter() и фильтровать все эти Подмассивы из, которые не имеют default => 1.

После этого просто просто возьмите столбец code из отфильтрованной решетки от array_column(), например.

<?php 

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

    print_r($result); 

?> 

выход:

Array 
(
    [0] => EUR 
) 
+0

Неустранимая ошибка: вызов неопределенной функции array_column() Я фиктивный на этом: S –

+0

@ValerieCastle Ваша версия PHP ('echo phpversion();') находится под <5.5. Поэтому просто измените 'array_column()' на 'array_map()', например. '$ Результат = array_values ​​(array_map (функция ($ v) { \t \t возврата $ v [ "код"]; \t \t}, array_filter ($ валюты, функция ($ v) { \t \t возвращение $ v [» default "] == 1; \t})));' – Rizier123

+0

@ValerieCastle Итак, где мы с этим вопросом? – Rizier123

0

Попробуйте использовать array_filter(). Пример:

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

print '<pre>'; 
print_r($result); 
print '</pre>'; 
Смежные вопросы