繁体   English   中英

使用基于同一数组中的另一个值的数组值设置变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM