PHP 内爆价值
PHP Implode Value
如何从下面的数组中获取单个值?第 19 行的当前结果就像 19 重复了两次一样;
E:/database/users/1919/
我只需要 19,所以 URL 看起来像;
E:/database/users/19/
<?php
$db = new SQLite3('C:/inetpub/wwwroot/database.db');
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray())
{
$id = implode($lastrow);
}
$database = 'E:/database/users/'.$id.'/';
?>
SQLite3Result::fetchArray
默认使用 SQLITE3_BOTH
模式,其中 returns 一个由 0 索引和所选列组成的关联数组。
意味着您将收到如下值:
$lastrow = array(
0 => '19',
'id' => '19'
);
要解决此问题,您只需更改 fetchArray
以使用 SQLITE3_NUM
或 SQLITE3_ASSOC
.
检索单个值
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray(SQLITE3_NUM)) {
$id = implode($lastrow);
//list($id) = $lastrow; //alternative to implode
}
$database = 'E:/database/users/'.$id.'/';
或者您只需要指定要检索的列名,而不是使用 implode
.
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray()) {
$id = $lastrow['id'];
}
$database = 'E:/database/users/'.$id.'/';
由于您似乎只需要最后一行,我建议您更改查询以提高整体性能。
SELECT MAX(id) FROM users
或
SELECT id FROM users ORDER BY id DESC LIMIT 1
允许您检索最后一个 ID 而无需遍历整个用户 table。
if ($row = $db->query('SELECT MAX(id) FROM users')) {
if ($row->numColumns()) {
list($id) = $row->fetchArray(SQLITE3_NUM);
$database = 'E:/database/users/'.$id.'/';
}
}
因为$lastrow
的值是正确的数组,而且你说它取了两次值,你可以试试这个,声明$id = array()
并尝试重新赋值给$id = array_shift($lastrow)
然后另一个变量将处理像 $implodedArray = implode($id)
这样的值并设置为你喜欢的 $database = 'E:/database/users/'.$implodedArray .'/';
这应该得到值 19
。这是一个操纵你的数组的想法。
如何从下面的数组中获取单个值?第 19 行的当前结果就像 19 重复了两次一样;
E:/database/users/1919/
我只需要 19,所以 URL 看起来像;
E:/database/users/19/
<?php
$db = new SQLite3('C:/inetpub/wwwroot/database.db');
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray())
{
$id = implode($lastrow);
}
$database = 'E:/database/users/'.$id.'/';
?>
SQLite3Result::fetchArray
默认使用 SQLITE3_BOTH
模式,其中 returns 一个由 0 索引和所选列组成的关联数组。
意味着您将收到如下值:
$lastrow = array(
0 => '19',
'id' => '19'
);
要解决此问题,您只需更改 fetchArray
以使用 SQLITE3_NUM
或 SQLITE3_ASSOC
.
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray(SQLITE3_NUM)) {
$id = implode($lastrow);
//list($id) = $lastrow; //alternative to implode
}
$database = 'E:/database/users/'.$id.'/';
或者您只需要指定要检索的列名,而不是使用 implode
.
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray()) {
$id = $lastrow['id'];
}
$database = 'E:/database/users/'.$id.'/';
由于您似乎只需要最后一行,我建议您更改查询以提高整体性能。
SELECT MAX(id) FROM users
或
SELECT id FROM users ORDER BY id DESC LIMIT 1
允许您检索最后一个 ID 而无需遍历整个用户 table。
if ($row = $db->query('SELECT MAX(id) FROM users')) {
if ($row->numColumns()) {
list($id) = $row->fetchArray(SQLITE3_NUM);
$database = 'E:/database/users/'.$id.'/';
}
}
因为$lastrow
的值是正确的数组,而且你说它取了两次值,你可以试试这个,声明$id = array()
并尝试重新赋值给$id = array_shift($lastrow)
然后另一个变量将处理像 $implodedArray = implode($id)
这样的值并设置为你喜欢的 $database = 'E:/database/users/'.$implodedArray .'/';
这应该得到值 19
。这是一个操纵你的数组的想法。