【问题标题】:Foreach iteration not workingForeach 迭代不起作用
【发布时间】:2014-06-24 06:30:34
【问题描述】:

我在一个数组变量中得到了一些键值。这里我迭代数组并执行它。


foreach ($key_details as $index => $value) {
   # code...
   $result = $s3->deleteObjects(array(
   'Bucket'  => CONTENT_BUCKET,
   'Objects' => array(
      array('Key' => $value),
   )
   ));
}

这里每次我需要创建一个实例。如果可以这样迭代


# code...
$result = $s3->deleteObjects(array(
   'Bucket'  => CONTENT_BUCKET,
   'Objects' => array(
      foreach ($key_details as $index => $value) {
         array('Key' => $value),
      }
   )
   ));
}

【问题讨论】:

  • array('Key' => $value) 你的意思是array($key => $value) ?对象数组是否包含另一个数组或多个数组或直接键 => 值?
  • 只有第一个变体可以工作。在第二个代码中,您尝试将循环添加到array。您也可以使用foreach 创建数组数组,然后将它们添加到deleteObjects 函数。
  • $key_details 中有多个值。在这里,我想要每条记录并将其放入删除对象中。当我使用最后一种方法时,我收到此错误 Parse error: syntax error, unexpected T_FOREACH, expecting ')' in

标签: php arrays


【解决方案1】:

你不能在这样的数组声明中使用foreach - 因此你的parse error: unexpected T_FOREACH...。但是,您可以先简单地为Objects 创建数据,然后将其用于deleteObjects 参数。

$objects = array();
foreach ($key_details as $value) {
    $objects[] = array('Key' => $value);
}

$result = $s3->deleteObjects(array(
            'Bucket'  => CONTENT_BUCKET,
            'Objects' => $objects
        ));

【讨论】:

    【解决方案2】:

    你一直在覆盖$result

    $result = $s3->deleteObjects(array(....
    

    你不打算创建一个数组吗?

    喜欢

    $result[] = $s3->deleteObjects(array(....
    

    或

    $result[$key] = $s3->deleteObjects(array(....
    

    您也可以在 foreach 之后设置结果,并且在 foreach 中是一个 temp_object 数组...

    你有

    array('Key' => $value)
    

    你希望这样吗

    array($key => $value)
    

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 2021-02-24
      • 2012-04-27
      • 1970-01-01
      • 2020-11-23
      • 2014-09-18
      相关资源
      最近更新 更多