显示第一个和第三个值foreach数组

时间:2014-09-03 09:55:38

标签: php arrays

我有几个存储在变量中的数组。我的变量包含这些数组:

Array ( [0] => firstname [1] => lastname [2] => email [3] => phone ) 
Array ( [0] => Benny [1] => Mose [2] => benny@mose.dk [3] => 12345678 ) 
Array ( [0] => Luke [1] => Skywalker [2] => luke@theforce.dk [3] => 10000000 ) 
Array ( [0] => Master [1] => Yoda [2] => yoda@theforce.dk [3] => 13370002 ) 
Array ( [0] => Ben [1] => Kenobi [2] => ben@theforce.dk [3] => 13370004 ) 
Array ( [0] => Darth [1] => Bandon [2] => darth@sith.dk [3] => 55554444 ) 
Array ( [0] => C-3PO [1] => Robot [2] => c-3po@theforce.dk [3] => 33339999 ) 
Array ( [0] => R2D2 [1] => Robot [2] => r2d2@theforce.dk [3] => 44447777 ) 
Array ( [0] => Han [1] => Solo [2] => han@frozen4life.dk [3] => 99998888 ) 
Array ( [0] => Jar jar [1] => Binks [2] => jarjar@theforce.dk [3] => 111112222 ) 

我想显示每个数组的第一个[0]和第三个[2]值。

我可以使用以下方法显示每个数组的第一个值:

$CSVfp = fopen("csv-list.csv", "r");
if($CSVfp !== FALSE) {
 while(! feof($CSVfp)) {
  $data = fgetcsv($CSVfp);

echo '<hr>';
foreach($data as $arr)
{
    echo $data[0].' '.$data[1].', '.$data[2].'<br>'; // first element

}

 }
}
fclose($CSVfp);

但我无法弄清楚如何显示第一个和第三个值。

1 个答案:

答案 0 :(得分:1)

一个简单的foreach循环应该可以解决这个问题:

foreach($data as $arr)
{
    echo $arr[0]."\r\n"; // first element
    echo $arr[2]."\r\n"; // third element.
}

在foreach循环中,你获取每个元素(在你的情况下,我已经是一个数组),并可以使用它作为它是什么。

所以在第一个循环中,$arr可以看作:

Array ( [0] => firstname [1] => lastname [2] => email [3] => phone ) 

因此您可以正常显示元素。

如果要在数组中显示包含数十个元素的每个第二个元素,或者搜索特定元素或其他任何元素,则可以执行第二个foreach循环:

foreach($data as $arr)
{
    foreach($arr as $key=>$val)
    {
        echo ($key=='someElement')?$val:"";
    }
}

编辑:根据您的评论,变量实际上并不包含您在问题中显示的(所有)数组,而是一次只包含其中一个数组。

基于此,您只需访问数组的每个元素:

echo $data[0]."\r\n"; // first element
echo $data[2]."\r\n"; // third element.

编辑2:

$CSVfp = fopen("csv-list.csv", "r");
if($CSVfp !== FALSE) 
{
    while(! feof($CSVfp)) 
    {
        $data = fgetcsv($CSVfp);
        echo '<hr>';
        echo $data[0].' '.$data[1].', '.$data[2].'<br>'; // first element
    }
}
fclose($CSVfp);

你根本不需要foreach - 你已经将每一行作为一个简单的数组访问。

编辑3:

您可以使用简单的计数器和模数函数:

$i=0;
$CSVfp = fopen("csv-list.csv", "r");
if($CSVfp !== FALSE) 
{
    while(! feof($CSVfp)) 
    {
        $i++;
        $data = fgetcsv($CSVfp);
        if($i%3==0)
        {
            echo '<hr>';
            echo $data[0].' '.$data[1].', '.$data[2].'<br>'; // first element
        }
    }
}
fclose($CSVfp);