为什么$ aliasArr总是一个数组,如果字符串上没有逗号?

时间:2016-02-28 03:49:21

标签: php

我有这段代码:

$str = "one, two, three ,four";
$str = "one";

echo $str . PHP_EOL;

$noWhiteSpaces = str_replace(' ', '', $str);
$aliasArr = explode(',', $noWhiteSpaces);

echo is_array($aliasArr) ? 'true' : 'false';
echo PHP_EOL;

背后的想法很简单:如果字符串$str有逗号(,),那么$aliasArr将是一个数组,否则它将是假的。如果您使用第一个$str测试代码,您将看到如何获得TRUE作为输出,但如果您尝试使用第二个(覆盖前一个),您将看到TRUE我认为是错的,我是对的?

4 个答案:

答案 0 :(得分:3)

explode函数返回数组,因此请检查数组echo sizeof($aliasArr) > 1 ? 'true' : 'false';的长度(如果未找到分割值,则长度为1)

答案 1 :(得分:3)

一旦你爆炸它就会得到一个包含一个元素的数组。之后它总是一个数组。另一种方法可能是检查数组的长度,以确定它是否只有一个元素或多个元素。

答案 2 :(得分:2)

explode()始终返回一个数组 - 即使它只是一个元素,请参阅official documentation

只需将is_array($aliasArr)替换为

即可
count($aliasArr) > 1

获取您正在寻找的功能。

答案 3 :(得分:2)

两件事: -

1。(,)被称为comma而不是column(可能在您的问题中可能是拼写错误)

2.无论何时explode(),你总会得到一个数组(一个元素数组或一个多个值的数组)。

所以你需要检查echo (sizeof($aliasArr)>1) ? 'true' : 'false';

或者您也可以使用count($aliasArr)>1