【问题标题】:how to use one array two times in an array php?如何在数组php中使用一个数组两次?
【发布时间】:2019-10-16 21:50:16
【问题描述】:
$a = array('a','b','c','d','e','f');
$b = array('1','2');
$count = 0;
$d = 0 ;
$input = array('ina', 'inb','inc');
foreach ($a as $key => $v) {
$count++;
echo $v;
echo $input[$key];
if ($count%3 == 0){
echo $b[$d++];
reset($input);  
}
}

我想要这样的输出

1
a-ina
b-inb
c-inc
2
d-ina
e-inb
f-inc

实际上,我想在 foreach 循环中使用两次 $input$a 有 6 个项目 $input 有 3 个项目,$b 有 2 个项目。我需要

【问题讨论】:

    标签: php arrays loops foreach


    【解决方案1】:

    为了使其更适用,Demo

    $a = array('a','b','c','d','e','f');
    $input = array('ina', 'inb','inc');
    $loop = 1;
    $input_length = count($input);   // TODO process the length with 0 case.
    foreach($a as $index => $value){
        if(!($i = $index % $input_length)){
            echo $loop . PHP_EOL;
            $loop++;
        }
        echo $value . "_" . $input[$i] . PHP_EOL;
    }
    

    【讨论】:

    • 根据 OP 的代码,您应该真正从 $b 而非您的 $loop 计数器输出值。
    【解决方案2】:

    您保留了一些您并不真正需要的变量,因为它们可以从 $a$key 值派生而来。要获得您想要的输出,您可以这样做:

    $a = array('a','b','c','d','e','f');
    $b = array('1','2');
    $input = array('ina', 'inb','inc');
    $len = count($input);
    foreach ($a as $key => $v) {
        $idx = $key % $len;
        if ($idx == 0){
            echo $b[floor($key/3)] . PHP_EOL;
        }
        echo $v . "-";
        echo $input[$idx] . PHP_EOL;
    }
    

    输出:

    1
    a-ina
    b-inb
    c-inc
    2
    d-ina
    e-inb
    f-inc
    

    Demo on 3v4l.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多