按范围打印foreach中的值


Print values from a foreach by 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"的一系列值。感谢大家

只有当数组始终为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运行该数组。

$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));

有很多方法,但一个简单的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];

您计划如何通过起点和终点?字符串?

编辑:

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