我有一些简单的代码:
:ul1 = 0;
$sql = "SELECT word FROM tbl WHERE 1 = 1 AND catid > :ul1 ORDER BY RAND() LIMIT 3";
$stmt1 = $pdo->prepare($sql1);
$stmt1->bindParam(':ul1', $ul1);
$stmt1->execute();
$row1 = $stmt1->fetchAll();
var_dump($row1);
输出:
array(3) {
[0]=>
array(2) {
["word"]=>
string(8) "arrochar"
[0]=>
string(8) "arrochar"
}
[1]=>
array(2) {
["word"]=>
string(7) "cabinet"
[0]=>
string(7) "cabinet"
}
[2]=>
array(2) {
["word"]=>
string(10) "doghearted"
[0]=>
string(10) "doghearted"
}
}
我可以通过以下方式访问数组元素:
$test = $row1[2][0];
我想知道是否有任何方法可以获得更简单的数组输出 - 例如每个数组元素似乎包含两次相同的东西。
不重要 - 我仍然可以做我需要做的事情,我只是好奇。
答案 0 :(得分:1)
虽然您要求PDO::FETCH_ASSOC
不变(通过调用fetchAll(PDO::FETCH_ASSOC)
,您只会获得单个值),但还有更智能的提取模式 - PDO::FETCH_COLUMN
$ul1 = 0;
$sql = "SELECT word FROM tbl WHERE catid > ? ORDER BY RAND() LIMIT 3";
$stmt = $pdo->prepare($sql);
$stmt->execute([$ul1]);
$data = $stmt->fetchAll(PDO::FETCH_COLUMN);
var_dump($data);
这样你就可以得到一个简单的一维数组,你可以用最自然的方式解决这个问题:
$test = $data[2];
或用
迭代foreach ($data as $word)
{
echo "$word</br>\n";
}