显示每个数组的第一个和第三个值


Display first and third value foreach array

我在一个变量中存储了几个数组。我的变量包含以下数组:

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

但我不知道如何同时显示第一个和第三个值。

一个简单的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);