Php 查询提供一个包含多个元素的索引数组

Php 查询提供一个包含多个元素的索引数组,php,mysqli,Php,Mysqli,我有这样的代码: $ch = @new mysqli ($config['db']['host'],$config['db']['user'],$config['db']['password'],$config['db']['database']); if($result = $ch->query("SELECT pid FROM posts")) { while($pids = $result->fetch_assoc()) { var_dump($p

我有这样的代码:

$ch = @new mysqli ($config['db']['host'],$config['db']['user'],$config['db']['password'],$config['db']['database']);
if($result = $ch->query("SELECT pid FROM posts"))
{
   while($pids = $result->fetch_assoc())
    {
        var_dump($pids);
    }
var_dump给了我:

array(1) { ["pid"]=> string(1) "1" } array(1) { ["pid"]=> string(1) "2" } array(1) { ["pid"]=> string(1) "3" } array(1) { ["pid"]=> string(1) "4" }
我有两个问题:

  • 在数据库中,列“pid”是int类型,但查询会生成字符串数组
  • 数据库(4)中的所有记录保存在一个数组中的一行中(仅获得一个索引)

  • 因此,我不能使用max(),因为它提供了所有记录(4321)。

    您有4条记录。检查正确。
    var\u dump()
    执行四次,返回单个数组(列-行值):

    如果希望所有内容都包含在单个变量中,请使用:

    $allPids = array();
    while (false != ($pids = $result->fetch_assoc())) {
      $allPids[] = $pids;
    }
    var_dump($allPids);
    

    首先需要将它们存储在一个
    数组中

    while($pids = $result->fetch_assoc())
    {
        $array[] = $pids;
    }
    var_dump($array);
    

    对于数据类型PHP将相应地强制转换它们。

    正确解释您的问题!!它给了我类似于
    array(1){[0]=>array(1){[“pid”]=>string(1)“1”}array(2){[0]=>array(1){[“pid”]=>string(1)“1”}[1]=>array(1){[“pid”]=>string(1){[0]=>array(1){[“pid”]=>string(1)}[1]=>string(1){“pid”=>string(1)“2”=>string(1)}>数组(4){[0]=>数组(1){[“pid”]=>字符串(1)“1”}[1]=>数组(1){[“pid”]=>字符串(1)“2”}[2]=>数组(1){[“pid”]=>字符串(1)“3”}[3]=>数组(1){[“pid”]=>字符串(1)“4”}
    @tomaszimiński更改为
    $allPids[]=$pid[]
    并且您可以使用
    max
    函数,如
    max($allPids)
    $allPids[]=$pids['pid']
    echo max($allPids)它给出了查询(1234)中的所有pid@TomaszSiemiński刚刚看到它正在获取字符串值。使用
    $allPids[]=intval($pids[“pid”])并且请不要在接受后拒绝接受。只有当人们没有回应时才去做。当人们忙于日常工作时,请尊重他们帮助你的时间。对此表示歉意。我用过它,它们现在是int的,但是
    max()
    仍然给我所有的。
    while($pids = $result->fetch_assoc())
    {
        $array[] = $pids;
    }
    var_dump($array);