Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组。如何格式化我的结果_Php - Fatal编程技术网

php数组。如何格式化我的结果

php数组。如何格式化我的结果,php,Php,我对php非常陌生,我肯定需要一些帮助来理解如何从数据库查询中获得所需的结果 我需要的是这样一个关联数组,'bla'=>'bla'。我从foreach循环中得到的是一个打印: [0] => Array ( [0] => test0 [name] => test0 [1] => 1 [customer_id] => 1 ) [1] => Array ( [0

我对php非常陌生,我肯定需要一些帮助来理解如何从数据库查询中获得所需的结果

我需要的是这样一个关联数组,'bla'=>'bla'。我从foreach循环中得到的是一个打印:

[0] => Array
    (
        [0] => test0
        [name] => test0
        [1] => 1
        [customer_id] => 1
    )

[1] => Array
    (
        [0] => test
        [name] => test
        [1] => 2
        [customer_id] => 2
    )
这是我的循环:

foreach($res as $key=>$val)
{
  // have no idea..
}
有人能帮我格式化我的结果,让它们像“索引”=>“值”一样吗

谢谢你的帮助


下面是一个示例代码,它使用foreach,但提取关联。我不明白。我认为我的索引结果集是因为我没有正确地编写循环。下面是使用foreach的代码

foreach ($items as $key=>$value) {
    if (strpos(strtolower($key), $q) !== false) {
        echo "$key|$value\n";
    }
}

下面是我用来获取结果的数据库类的一部分

$returnArray = array();
$i=0;
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    if($row)
        $returnArray[$i++] = $row;
}
mysql_free_result($result);
return $returnArray;
在使用了给我的代码来省略索引号之后,下面是我现在剩下的内容。很近,但不是我需要的

排列 ( [id]=>1 [cust]=>bobs自动 )

这就是上面这一行的内容

'1' => 'bobs auto'
我试图做的是为建议框的JSON调用格式化输出



我不能让它工作。这里是我的数据库连接后的一切

$out_array = array();
foreach($items as $key=>$val)
{
    if(is_int($key))
    {
      continue;
    }
    $out[$key['id']] = $val['cust'];
}



//echo'<pre>';
//print_r($out_array);
//echo'</pre>';

foreach ($out_array as $key=>$value) {
    if (strpos(strtolower($key), $q) !== false) {
        echo "$key|$value\n";
    }
}
请注意,已注释的行不起作用,它会像id一样输出两次,但未注释掉的行可以正常工作。这是它的输出

$out_array = array();
foreach($items as $key)
{
  //    $out_array[$key] = $val;
  $out_array[$key['id']] = $key['cust'];

  foreach ($out_array as $key=>$value)
  {
      if (strpos(strtolower($key), $q) !== false)
      {
          echo "$key|$value\n";
      }
  }

}
从这一点上讲,我会使用另一个foreach来迭代整个数据集吗?上面看到的数组输出来自打印


这就是我现在所拥有的,它返回了正确的关联。但是,我必须注释掉strpos条件才能得到任何结果,我不知道为什么。我在嵌套这些foreach循环时是否正确

$query = mysql_query("SELECT * FROM dbname"); //Create the query to your database
while($data = mysql_fetch_array($query)) //Loop through our results from the query
{
    echo($data['fieldname']."<br/>"); //echo out data through the loop
}

那么您不希望数组中有数字索引?您必须使用,它将返回带有数字键和字符串键的结果。用于获取仅包含字符串键(字符串为列名)的数组。

所以不希望数组中包含数字索引?您必须使用,它将返回带有数字键和字符串键的结果。用于获取仅包含字符串键(字符串为列名)的数组。

您是从PHP的查询和结果函数中获得此数组的,是吗

如果您使用的是mysql,那么像下面这样做实际上更容易

$query = "SELECT * FROM Table WHERE ...";
$query = mysql_query($query);

while($info = mysql_fetch_assoc($query)){

    //$info is now a single row, associative array
    echo print_r($info);
}
$query=mysql\u query(“从dbname中选择*)//创建对数据库的查询
while($data=mysql\u fetch\u array($query))//循环查询结果
{
echo($data['fieldname'].“
”);//通过循环回显数据 }
您从PHP的查询和结果函数中获得了这个数组,是吗

如果您使用的是mysql,那么像下面这样做实际上更容易

$query = "SELECT * FROM Table WHERE ...";
$query = mysql_query($query);

while($info = mysql_fetch_assoc($query)){

    //$info is now a single row, associative array
    echo print_r($info);
}
$query=mysql\u query(“从dbname中选择*)//创建对数据库的查询
while($data=mysql\u fetch\u array($query))//循环查询结果
{
echo($data['fieldname'].“
”);//通过循环回显数据 }
假设这是一个MySQL数据库,结果(如果不止一个)将作为多维数组返回

运行查询时:

$my_array = array();
$info = $data[0]; //grab the first row of your data set from the original question.
    foreach($info as $index => $value){
        if(!is_int($index)){
            $my_array[$index] = $value;
        }
    }
echo print_r以您现在查找结果的方式显示结果“索引”=>“值”

编辑:基于评论

如果您绝对无法摆脱mysql\u fetch\u数组,那么您必须破解代码。它不是干净的,我强烈建议重构,但下面是代码,您只需要根据给定的内容创建一个字段名索引数组

$out_array = array();
foreach($res as $key=>$val) {
    if(is_int($key)) {continue;}
    $out_array[$key] = $val;
}

新创建的$my_数组将采用您正在寻找的格式。

假设这是一个MySQL数据库,结果(如果不止一个)将作为多维数组返回

运行查询时:

$my_array = array();
$info = $data[0]; //grab the first row of your data set from the original question.
    foreach($info as $index => $value){
        if(!is_int($index)){
            $my_array[$index] = $value;
        }
    }
echo print_r以您现在查找结果的方式显示结果“索引”=>“值”

编辑:基于评论

如果您绝对无法摆脱mysql\u fetch\u数组,那么您必须破解代码。它不是干净的,我强烈建议重构,但下面是代码,您只需要根据给定的内容创建一个字段名索引数组

$out_array = array();
foreach($res as $key=>$val) {
    if(is_int($key)) {continue;}
    $out_array[$key] = $val;
}

新创建的$my_数组将采用您正在寻找的格式。

尝试类似的方法。它的工作原理是跳过整数索引,并将非整数索引放入输出数组

$out_array = array();
foreach($items as $key=>$val)
{
    if(is_int($key))
    {
      continue;
    }
}
$out[$out_array['id']] = $out_array['cust'];


//echo'<pre>';
//print_r($out_array);
//echo'</pre>';

foreach ($out as $key=>$value) {
    if (strpos(strtolower($key), $q) !== false) {
        echo "$key|$value\n";
    }
}
编辑:

$out_array=array();
foreach($key=>$val的项目)
{
if(is_int($key))
{
继续;
}
}
$out[$out_数组['id']=$out_数组['cust'];
//回声';
//打印(输出数组);
//回声';
foreach($key=>$value){
if(strpos(strtolower($key),$q)!==false){
回显“$key |$value\n”;
}
}

试试这样的方法。它的工作原理是跳过整数索引,并将非整数索引放入输出数组

$out_array = array();
foreach($items as $key=>$val)
{
    if(is_int($key))
    {
      continue;
    }
}
$out[$out_array['id']] = $out_array['cust'];


//echo'<pre>';
//print_r($out_array);
//echo'</pre>';

foreach ($out as $key=>$value) {
    if (strpos(strtolower($key), $q) !== false) {
        echo "$key|$value\n";
    }
}
编辑:

$out_array=array();
foreach($key=>$val的项目)
{
if(is_int($key))
{
继续;
}
}
$out[$out_数组['id']=$out_数组['cust'];
//回声';
//打印(输出数组);
//回声';
foreach($key=>$value){
if(strpos(strtolower($key),$q)!==false){
回显“$key |$value\n”;
}
}
注意使用


注意。

Ok的用法,关于我的最后一个问题。我在嵌套foreach循环时不正确。我的代码也有输入错误。它终于起作用了。感谢所有帮助我的人

好的,关于我的最后一个问题。我在嵌套foreach循环时不正确。我的代码也有输入错误。它终于起作用了。感谢所有帮助我的人

唯一的问题是整个应用程序都依赖于数据库包装器。我现在不能改变它。这是在一个班级,这基本上是我所有的。没有办法基于fetch_assoc获取此信息吗?唯一的问题是整个应用程序都依赖于数据库包装器。我现在不能改变它。这是在一个班级,这基本上是我所有的。有没有办法得到这个基于获取协会?谢谢你的帮助。。db i