PHP foreach循环混乱?

时间:2013-02-07 19:03:27

标签: php loops foreach

所以一个简单的例子就是

$ar = array("some text","more text","yet more text");

foreach($ar as $value){

echo $value."<br>";

}

我得到了结果

some text
more text
yet more text

所以我的问题是当我们在foreach循环“$ ar as $ value”中执行此操作时, 我知道$ ar是数组,但第二个$ value是简单的 变量还是另一个数组?因为我们也可以通过以下方式做到这一点

foreach($ar as $value){

echo $value[0]."<br>";

}

哪会导致

s

5 个答案:

答案 0 :(得分:1)

在PHP中,字符串是字节数组。引用0的{​​{1}}位置是指字符串中的位置($value)(0中的s

您的实际数组如下所示:

Array
(
    [0] => some text
    [1] => more text
    [2] => yet more text
)

如果要访问数组的索引位置,可以执行以下操作:

some test

将输出:

0 - some text
1 - more text
2 - yet more text

答案 1 :(得分:1)

$value是数组中的值,除非您有嵌套数组(array(array('a','b'),array('b','c'))),否则它本身不是数组。但是,订阅字符串仍然是可能的,这就是你获得字符串的第一个字符的方式。

答案 2 :(得分:1)

问题在于$value[0]访问字符串的第一个字符。

字符串在内部表示为数组。因此,访问字符串的索引0就像访问第一个字符一样。

这就是它打印“s”的原因,因为你的字符串“some text”以s

开头

您可以将您的示例视为以下

array(
    [0] => array(
        [0] => 's',
        [1] => 'o',
        [2] => 'm',
        [3] => 'e',
        //...
    ),
    [1] => array(
        [0] => 'm',
        [1] => 'o',
        [2] => 'r',
        [3] => 'e',
        //...
    ),
    //...
);

答案 3 :(得分:1)

你应该

 s m y

在不同的行上。

BTW br标签是旧帽子。

答案 4 :(得分:1)

PHP中可以按字符进行字符串访问和修改。您需要知道的,可能不知道的是,虽然字符串表示为字符串,但有时它们可​​以被视为数组:让我们看一下这个例子:

$text = "The quick brown fox...";

现在,如果您要回显$text[0],您将获得字符串中的第一个字母,在这种情况下恰好是T,或者如果您想要修改它,请执行{{1}然后你会将字母$text[0] = "A";更改为"T"

这是PHP Manual的一个很好的教程,它向您展示如何通过将字符串视为数组来访问/修改字符串。

"A"

BTW:如果你只想显示数组中的第一个值,你可以使用

之类的东西
<?php
// Get the first character of a string
$str = 'This is a test.';
$first = $str[0];

// Get the third character of a string
$third = $str[2];

// Get the last character of a string.
$str = 'This is still a test.';
$last = $str[strlen($str)-1]; 

// Modify the last character of a string
$str = 'Look at the sea';
$str[strlen($str)-1] = 'e';

?>