我正在做一个试图分裂成这样的数组的查询:
$sql = "SELECT *FROM questions";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$myString = $row["qID"] . "," . $row["question"] . "," . $row["answer"] . "%";
$myArray = explode('%', $myString);
print_r($myArray);
}
} else {
echo "0 results";
}
$conn->close();
但是当我打印数组print_r($ myArray);或者通过它循环我的结果如下:
Array (
[0] => 1,Vem levde mellan 970-1022,2
[1] =>
)
Array (
[0] => 2,Vem levde mellan 1008-1050,3
[1] =>
)
为什么数组会检索空值?每个数组得到2个索引[0]和[1],但[1]为空。 [0]索引包含的信息就是我想要的方式,但是空索引给我带来了麻烦。
答案 0 :(得分:1)
问题是你在char%而不是char处爆炸。 我想你需要的是:
$myArray = array();
while($row = $result->fetch_assoc())
$myArray[] = array($row["qID"],$row["question"],$row["answer"]);
print_r($myArray);
答案 1 :(得分:1)
$ myString以%结尾。 然后你用%移出字符串。因此,预期输出是具有最少两个索引的数组。
答案 2 :(得分:1)
为了充实我上面的评论,这是不 mysqli做任何事情:
php > $x = "a,b,c%";
php > var_dump(explode('%', $x));
array(2) {
[0]=>
string(5) "a,b,c"
[1]=>
string(0) ""
}
如果正在使用的分隔符出现在字符串的开头或结尾处,则这是explode()的正常行为。