为什么我的数组中的逗号读作字符串?

时间:2009-11-18 09:41:15

标签: php arrays string

这就是我想要做的事情:

1 - 我有一个带字符串的数组。

$photographer_array = "'Alberto Korda', 'Annie Leibowitz', 'Ansel Adams'";

2 - 我正在尝试使用该字符串填充数组。

array($photographer_array);

它正在做的是创建一个包含所有逗号的单个条目的数组。为什么它将逗号作为字符串读取?无论如何,我可以让它不是作为字符串读取逗号,而是使用它们来分隔数组中的值?

8 个答案:

答案 0 :(得分:6)

很抱歉这样说,但是你不能以这种方式填充数组,因为字符串通常不会被解析和执行。你所能做的就是:

$photographer_array = array('Alberto Korda', 'Annie Leibowitz', 'Ansel Adams');

或者这个(编辑:将其改编为您的查询代码):

$photographer_array = array();

while ($photographer_row = $result->fetch_assoc()) {
    $photographer_array[] = $photographer_row['photographer_name'];
}

P.S。:你只是喜欢长变量名,不是吗? ;)

答案 1 :(得分:3)

这是因为$photographer_array 是一个字符串,使用array($photographer_array)只需将字符串放入数组。

也许你想这样做:

$photographer_array = explode(',', "'Alberto Korda', 'Annie Leibowitz', 'Ansel Adams'");

这会给你

array(3) {
  [0]=>
  string(15) "'Alberto Korda'"
  [1]=>
  string(18) " 'Annie Leibowitz'"
  [2]=>
  string(14) " 'Ansel Adams'"
}

或者你想要:

$photographer_array = array('Alberto Korda', 'Annie Leibowitz', 'Ansel Adams');
// ...

修改

关于您发布的代码 - 以下内容将为您提供$photographer_row['photographer_name']

的数组
// ...
$photographer_array = array();
while($photographer_row = $result->fetch_assoc()) {
    $photographer_array[] = $photographer_row['photographer_name'];
}

答案 2 :(得分:1)

我实际上是使用查询中的值创建一个数组,所以你知道我为什么这样做。这是我用来创建在我的数组中使用的字符串的代码。

$sql = "SELECT photographers.photographer_name
        FROM photographers
        ORDER BY photographer_name ASC
        LIMIT 3";

$result = $conn->query($sql) or die(mysqli_error());

$photographer_array = '';

while($photographer_row = $result->fetch_assoc()) {
$photographer_array .= "'" . $photographer_row['photographer_name'] . "', ";
}

$photographer_array = rtrim($photographer_array, ", ");

array($photographer_array);

答案 3 :(得分:1)

它将字符串作为字符串读取,因为您将其括在引号(“)中。如果您想要正确执行,请尝试:

$array = array('Alberto Korda', 'Annie Leibowitz', 'Ansel Adams');

或者:

$string = "Alberto Korda, Annie Leibowitz, Ansel Adams"; $arr = explode(',', $string);

答案 4 :(得分:1)

你会注意到变量$photographer_array被设置为单个字符串(其值是双引号之间的所有内容)。 php中的数组函数接受逗号分隔的对象列表。虽然你的$photographer_array变量中有逗号,但它们被认为是字符串中的字符而不是实际的分隔符,所以你真的只是创建一个只有一个恰好是字符串的值的数组。你可能想要的是以下内容:

$photographer_array = array('Alberto Korda', 'Annie Leibowitz', 'Ansel Adams');

答案 5 :(得分:1)

如果你需要一个字符串来使用数组:

$ photographer_array =“'Alberto Korda','Annie Leibowitz','安塞尔亚当斯'”;

eval("\$myArray = array(" . $photographer_array . ");");

使用后$myArray

答案 6 :(得分:0)

如果您可以访问PHP> = 5.3.0,那么您可以使用str_getcsv,它将逗号分隔的字符串解析为数组。

答案 7 :(得分:0)

Explode()正是您所需要的......

http://php.net/manual/en/function.explode.php