php存储变量以在for循环之外使用

时间:2016-06-09 05:41:48

标签: php variables for-loop

我有以下for循环:

<?php foreach($this->relatedItems as $key=>$item): ?>
<div class="column1"><?php echo $item->extraFields->field1->value; ?></div>
<div class="column2"><?php echo $item->extraFields->field2->value; ?></div>
<div class="column3"><?php echo $item->extraFields->field3->value; ?></div>
<?php endforeach; ?>

我想为传递的每个相关项目的每个自定义字段创建一个变量,以便在循环之外使用。

理想情况下我会有变量:

relatedItems1_field1, relatedItems1_field2, relatedItems1_field3, relatedItems1_field4, relatedItems2_field1, relatedItems2_field2, relatedItems2_field3, relatedItems2_field4, relatedItems3_field1, relatedItems3_field2, relatedItems3_field3, relatedItems3_field4

非常感谢任何帮助,非常感谢提前!

2 个答案:

答案 0 :(得分:1)

备选方案1

只要$this->relatedItems不是一个关联数组(键不是顺序或字符串作为键),那么你可以在循环外使用它:

$this->relatedItems[0]->extraFields->field1->value

备选方案2

如果$this->relatedItems中的数组键不可预测/关联,则可以使用以下代码:

<?php 
$keys = [];
foreach($this->relatedItems as $key => $item): 
    $keys[] = $key;
?>

    <div class="column1"><?php echo $item->extraFields->field1->value; ?></div>
    <div class="column2"><?php echo $item->extraFields->field2->value; ?></div>
    <div class="column3"><?php echo $item->extraFields->field3->value; ?></div>

<?php 
endforeach; 
?>

这将创建一个包含所有键的数组(0-9,如果$this->relatedItems中有10个数组项)。

然后你可以在循环外使用它:

$this->relatedItems[$keys[0]]->extraFields->field1->value

无需将所有值复制到新变量,因为您已在范围内拥有它们。

答案 1 :(得分:0)

您可以使用多维数组来存储值

查看示例代码。

<!DOCTYPE html>
<html>
  <body>

    <?php
      $cars = array
  (
       array("Volvo",22,18),
       array("BMW",15,13),
       array("Saab",5,2),
       array("Land Rover",17,15)
  )    ;

 echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
 echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
 echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
 echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>

</body>
</html>

喜欢这个

$items = array();
foreach($group_membership as $username) {
 $items[] = $username;

}

print_r($items);