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


Why $aliasArr is always an array if there is no comma on the string?

我有这个代码:

$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我认为是错误的,我是对的?

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

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

explode()总是返回一个数组——即使它只是一个元素,请参阅官方文档。

只需将is_array($aliasArr)替换为

count($aliasArr) > 1

获得您正在寻找的功能。

两件事:-

1. (,)被称为comma而不是column(可能是您问题中的错别字错误)

2.每当您explode()时,您总是会得到一个数组(一个元素数组或具有多个值的数组)。

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

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