我正在使用 MYSQL/PHP 开发一个玩家姓名生成器。如何将一列(不包括主键)表的值选择为一维数组,然后将数组的值连接起来?
示例表“syllableInitials”:
characters
t
d
ch
php代码
$syllable = array("","","");
$sql = "SELECT characters FROM syllableInitials";
$result = $conn->query($sql);
$syllableInitials = array();
while ($initial = mysqli_fetch_row($result)) {
$syllableInitials[] = $initial;
}
$syllableMedials = array("a", "o", "i");
$syllableFinals = array("m","s","d");
$syllable[0] = $syllableInitials[0] . $syllableMedials[2] . $syllableFinals[0];
echo "Syllable is: <b>" . $syllable[0] . "</b>";
我得到的输出是:
注意:数组到字符串的转换在线... 音节是:Arrayim
显然,上面示例代码的预期输出是“tim”而不是“Arrayim”。
syllableInitials 数组的 print_r 生成此...
Array (
[0] => Array ( [0] => t )
[1] => Array ( [0] => d )
[2] => Array ( [0] => ch )
)
所以看起来我不知何故无意中嵌套了数组或导致它是二维的!我的编码真的很生疏...提前致谢!
最佳答案
由于 $initial 是一个数组并且只有一个元素,因此您可以执行以下操作:
$syllableInitials[] = $initial[0];
但更好的解决方案是使用 PDO 及其 PDOStatement::fetchColumn功能。
例如:
$syllable = array("","","");
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
$dbh = new PDO('mysql:dbname=dbname;host=127.0.0.1', 'username', 'password', $options);
$sth = $dbh->prepare('SELECT characters FROM syllableInitials');
$sth->execute();
$syllableInitials = array();
while ($initial = $sth->fetchColumn()) {
$syllableInitials[] = $initial;
}
$syllableMedials = array("a", "o", "i");
$syllableFinals = array("m","s","d");
$syllable[0] = $syllableInitials[0] . $syllableMedials[2] . $syllableFinals[0];
echo "Syllable is: <b>" . $syllable[0] . "</b>";
关于php - 如何: concatenate a php array generated from a mysql query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135353/