![](/img/trans.png)
[英]Push a set of values to an array based on another unique value in the same array
[英]Set a variable using an array value based on another value in the same array
我是新来的。
我有一种情况,我需要遍历一个数组,确定该数组中的$key
的值是否为1
,然后使用来自同一数组中不同$key
的$value
设置一个变量。
这就是我的意思。
我从 API 中检索 JSON 数组,该数组部分看起来像这样:
(
[6] => Array
(
[element] => 191
[position] => 7
[multiplier] => 2
[is_captain] => 1
[is_vice_captain] =>
)
[7] => Array
(
[element] => 171
[position] => 8
[multiplier] => 1
[is_captain] =>
[is_vice_captain] =>
)
我想要做的是遍历数组,确定键[is_captain]
是否具有值 (1),并使用来自不同$key
的值设置变量,特别是[element]
。
例如,在上面的代码[6]
中,如果[is_captain]
的值为1
,我想创建一个值为[element] => 191
(191) 的变量。
这是我留下东西的地方:
for($i = 0; $i < count($players['picks']); $i++){
foreach ($fpl_team_picks['picks'][$keys[$i]] as $key => $value){
if (isset($key['is_captain'])){
$variable = $value['element'];
}
}
}
它不起作用。 我已经尝试过isset
function 和一系列数组函数( array_column
等),但我很难过。
$arr = array(
6 => array(
'element' => 191,
'position' => 7,
'multiplier' => 2,
'is_captain' => 1,
'is_vice_captain' => null
),
7 => array(
'element' => 171,
'position' => 8,
'multiplier' => 1,
'is_captain' => null,
'is_vice_captain' => null
)
);
在数组上设置 foreach 循环,设置值,遍历值,找到键值$index === 'is_captain'
并确保它设置为1
-> $data === '1'
。 如果这是真的定义你的变量。
foreach($arr as $value){
foreach($value as $index => $data){
if($index === 'is_captain' && $data === 1){
$element = $value['element'];
echo $element; // $element now holds the value where key = `element` if 'is_captain' is equal to `1`
}
}
}
在您的代码中,将$key['is_captain']
更改为$key === 'is_captain'
然后在相同条件下查找它的值是否匹配。
如果键等于目标键is_captain
并且键值等于1
,则将键集的值设置为element
并将其分配给您的变量:
if ($key === 'is_captain' && $val === 1)){
$variable = $value['element'];
}
我的方向是正确的,非常感谢贡献者的帮助。
我最初的问题并没有明确说明我正在使用嵌套数组。 我的数组片段没有显示。 我学到了关于完整性的教训。 (我是新来的)。
一旦我编写了处理嵌套数组的代码块并稍微修改了条件,我就成功了。 这是有效的最终代码:
$x = 0;
$captainsArr = array($fpl_team_picks['picks']);
foreach($captainsArr[$x++] as $value) {
if (is_array($value)){
foreach ($value as $index => $data) {
if ($index === 'is_captain' && $data == 1){
$captain = $value['element'];
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.