按范围打印foreach的值?

时间:2015-11-05 14:59:12

标签: php printing foreach range

我有各种各样的字符串数组:

$arreglo = array('juan castillo','andres felipe','gerardo diaz','onofre perez','paolo jara','jason guerra','luis lopez','ivan delgado','diego teran','andres figueroa','ines mosquera','karen chamorro','marco fernandez','rene valencia','valeria ramirez','ximena villavicencio','danilo zambrano','amanda yela','pablo morillo','william rodriguez','carlos chavez','camilo castro');
foreach ($arreglo as $key => $value) {
      echo $value;
}

我如何只打印一系列特定字符串,例如从'andres figueroa'到'danilo zambrano'的一系列值。谢谢大家

4 个答案:

答案 0 :(得分:0)

有很多方法,但简单的for可以解决问题:

for ( $i = 9; $i <= 16; $i++ )
    echo $arreglo[$i];

当然你可能不想像这样对你的指数进行硬编码 可以使用array_search找到它们:

$start = array_search( 'andres figueroa', $arreglo );
$stop = array_search( 'danilo zambrano', $arreglo );


for ( $i = $start; $i <= $stop; $i++ )
    echo $arreglo[$i];

请注意,只有andres figureoa出现在数组中的danilo zambrano之前,这才有效!要对它们进行排序,您可以这样做:

list( $start, $stop ) = array( min($start, $stop), max( $start, $stop ) );

您还可以使用range()

foreach ( range( $start, $stop ) as $i )
    echo $arreglo[$i];

答案 1 :(得分:0)

这仅在数组始终为0索引时才有效,但您可以使用array_search查找您正在寻找的开始/结束元素的索引(假设您始终在寻找它们)按价值值排除)然后使用array_slice仅迭代您想要的范围内的值...

$arreglo = [
            'juan castillo',
            'andres felipe',
            'gerardo diaz',
            'onofre perez',
            'paolo jara',
            'jason guerra',
            'luis lopez',
            'ivan delgado',
            'diego teran',
            'andres figueroa',
            'ines mosquera',
            'karen chamorro',
            'marco fernandez',
            'rene valencia',
            'valeria ramirez',
            'ximena villavicencio',
            'danilo zambrano',
            'amanda yela',
            'pablo morillo',
            'william rodriguez',
            'carlos chavez',
            'camilo castro'
           ];
$startPos = array_search('andres figueroa', $arreglo, true);
$endPos   = array_search('danilo zambrano', $arreglo, true);

foreach (array_slice($arreglo, $startPos, $startPos - $endPos + 2) as $key => $value) {
      echo $value, "\n";
}

请注意,这将是一个包容性范围,因此包含'andres figueroa''danilo zambrano'以及介于两者之间的所有内容。如果您不确定它是否为零索引,您也可以通过array_values运行数组。

答案 2 :(得分:0)

$arreglo = array('juan castillo','andres felipe','gerardo diaz','onofre perez','paolo jara','jason guerra','luis lopez','ivan delgado','diego teran','andres figueroa','ines mosquera','karen chamorro','marco fernandez','rene valencia','valeria ramirez','ximena villavicencio','danilo zambrano','amanda yela','pablo morillo','william rodriguez','carlos chavez','camilo castro');

$from = array_search("andres figueroa", $arreglo);
$to   = array_search("danilo zambrano", $arreglo);

print_r(array_slice($arreglo, $from, ($to - $from)+1));

答案 3 :(得分:-1)

您打算如何传递起点和终点?字符串?

编辑:

使用array_search查找数组中字符串的位置,然后执行for循环。