繁体   English   中英

在 PHP 数组 for-each 循环中,如何执行非冗余循环数据

[英]In a PHP array for-each loop, how to execute not redundant loop data

我正在尝试在 for each 循环内循环与数组关联的数组字符串。 问题是冗余数据显示。

这是我在数组中的代码数据:

  $attr_xyz = array(
            

            'child_id'    => array('id_a','id_b','id_c'),
            'child_class' => array('class_a','class_b','class_c'),
            'labels'      => array('label_a','label_b','label_c'),

   );

我正在做的是:

$get_attr_label_id = [];
   
foreach ($attr_xyz['child_id'] as $child_id) 
 {  
      
       $get_attr_label_id[] = $child_id;
 }
 
$get_child_id = implode(" ", $get_attr_label_id);
$get_attr_label_ = [];
   
foreach ($attr_xyz['labels'] as $labels) 
 {  
      
       $get_attr_label_[] = $labels;
 }
 
$get_child_labels = implode(" ", $get_attr_label_);

期待 output:

<div id="id_a">
<lable>$label_a</lable>
</div>

<div id="id_b">
<lable>$label_a</lable>
</div>

<div id="id_c">
<lable>$label_a</lable>
</div>

但发生的是:

<lable>$label_a</lable>
<div id="id_a" id="id_b" id="id_c"></div>
<div id="id_a" id="id_b" id="id_c"></div>
<div id="id_a" id="id_b" id="id_c"></div>

<lable>$label_b</lable>
<div id="id_a" id="id_b" id="id_c"></div>
<div id="id_a" id="id_b" id="id_c"></div>
<div id="id_a" id="id_b" id="id_c"></div>

<lable>$label_c</lable>
<div id="id_a" id="id_b" id="id_c"></div>
<div id="id_a" id="id_b" id="id_c"></div>
<div id="id_a" id="id_b" id="id_c"></div>

没有理由遍历数组并创建新的 arrays。 原始数组已经具有良好的结构。

这应该这样做:

$attr_xyz = [
    'child_id'    => array('id_a','id_b','id_c'),
    'child_class' => array('class_a','class_b','class_c'),
    'labels'      => array('label_a','label_b','label_c'),
];

foreach ($attr_xyz['child_id'] as $index => $id) {
?>
    <div id="<?= $id ?>">
        <lable><?= $attr_xyz['labels'][$index] ?></lable>
    </div>

<?php
}

这是一个演示

由于所有子 arrays 都是有序的,我们只需要使用foreach遍历其中一个。 这也为我们提供了在其他子 arrays 中获取相关值时使用的数组索引。

尝试这个

$attr_xyz = array(
        'child_id'    => array('id_a','id_b','id_c'),
        'child_class' => array('class_a','class_b','class_c'),
        'labels'      => array('label_a','label_b','label_c'),
    );
    $get_attr_label_id = [];

for ($i=0; $i < 3; $i++) { 
    $get_attr_label_id[] = $attr_xyz['child_id'][$i] . " " . $attr_xyz['labels'][$i];

}
$get_attr = implode(" ", $get_attr_label_id);

尝试这个

<?php
$cntr = count($attr_xyz['child_id']) - 1;
for($x = 0; $x <= $cntr; $x++)
{
$child_id = $attr_xyz['child_id'][$x];
$label = $attr_xyz['labels'][$x];
//Print your html here
echo "<div id=\"$child_id\">\n
<label>$label</label>\n
</div>\n\n";
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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