我正在尝试获取is_activated
列密钥的值。但无法获得确切的价值。已尝试array_search()
查看数组
需要检查所有is_activated
键的值是否值为1。
Array
(
[0] => Array
(
[first_name] => Array
(
[0] => john
)
[is_activated] => Array
(
[0] => 0
)
)
[1] => Array
(
[first_name] => Array
(
[0] => mark
)
[is_activated] => Array
(
[0] => 1
)
)
[2] => Array
(
[first_name] => Array
(
[0] => pretik
)
[is_activated] => Array
(
[0] => 0
)
)
)
我已尝试过以下解决方案,但无法获得结果。
$is_user_activated = array_search(1,array_column($activity,'is_activated'));
if($is_user_activated == 1) { echo 'yes'; }
else { echo 'no'; }
答案 0 :(得分:3)
我认为您希望在循环中执行此操作而不是使用array_search。使用foreach()来获得所需的结果:
foreach($yourArray as $item) {
if($item['is_activated'][0] == 1) {
echo 'yes';
} else {
echo 'no';
}
}
答案 1 :(得分:2)
您可以使用array_filter()
执行此类任务,它允许使用回调过滤功能:
<?php
$data = [
[
'first_name' => ['john'] ,
'is_activated' => [0]
],
[
'first_name' => ['mark'],
'is_activated' => [1]
],
[
'first_name' => ['pretik'],
'is_activated' => [0]
]
];
$matches = array_filter($data, function($entry) {
return in_array(1, $entry['is_activated']);
});
var_dump($matches);
输出是:
array(1) {
[1]=>
array(2) {
["first_name"]=>
array(1) {
[0]=>
string(4) "mark"
}
["is_activated"]=>
array(1) {
[0]=>
int(1)
}
}
}
这有点尴尬的原因是你的初始数据有一个非常奇怪的结构:元素的值是数组本身保存实际值而不是标量值本身。这使得搜索比在&#34; normal&#34;中更复杂。的情况。因此,如果您可以修复这个奇怪的结构而不是能够使用更简单的搜索方法,请好好看看。
答案 2 :(得分:0)
您可以通过array_filter
$activated = array_filter($users, function($record) {
return reset($record['is_activated']) == 1;
});
这只会保留被激活的用户,然后您可以简单地计算数组以查看您是否有任何激活的用户:
echo count($activated) ? 'yes' : 'no';