PHP - 在创建数组时(mysql_fetch_array)程序在数组中创建数组

Posted

技术标签:

【中文标题】PHP - 在创建数组时(mysql_fetch_array)程序在数组中创建数组【英文标题】:PHP - while creating array (mysql_fetch_array) program creating array in array 【发布时间】:2016-08-31 21:29:56 【问题描述】:

我要创建数组:

$branza_query = mysql_query ('SELECT craft FROM base') or die...   

 $craft = array();  
        while ($cra = mysql_fetch_array($craft_query))
        
            $craft[] = $cra;
        

没什么大不了的,但是当我想print_r它时,我有这样的结果:

Array ( [0] => Array ( [0] => steel [craft] => steel )
        [1] => Array ( [0] => farm [craft] => farm ) 
        [2] => Array ( [0] => some [craft] => some ) 
        [3] => Array ( [0] => it [craft] => it )    // etc.
      )

我只想将下一个值添加到现有数组,结果如下:

Array ( [0] = steel
        [1] = farm
        [2] = some
        [3] = it        /etc.
      )

Array ( [0] = craft => steel
        [1] = craft => farm
        [2] = craft => some
        [3] = craft => it        /etc.
      )

或类似的东西,因为接下来我想做的是:

foreach($craft as $value)

    echo '<option value ="'.$value.'"> '.$value.'</option>';

【问题讨论】:

指向索引,$cra['craft']$cra[0] 所以现在的结果是:Array ( [0] =&gt; Array ( [0] =&gt; it [craft] =&gt; it ) [1] =&gt; Array ( [0] =&gt; farm [craft] =&gt; farm ) 等等,所以这并不能解决问题 你没有理解我的意思,指向数组的确切元素,$craft[] = $cra[0];$craft[] = $cra['craft']; 哦,我明白了。非常感谢:)现在它工作得很好:) 【参考方案1】:

问题是您每次调用$craft[]=$cra 时都会创建一个以$cra 作为其第一个元素的数组,然后将其添加到$craft。这就是为什么你有一个三层数组的结果。

但实际上,$cra 已经是一个数组。所以你需要做的只是array_push($craft, $cra);。或使用array_push($craft, $cra[0]); 这将提供您想要的。

请参考页面http://php.net/manual/en/function.mysql-fetch-array.php

【讨论】:

以上是关于PHP - 在创建数组时(mysql_fetch_array)程序在数组中创建数组的主要内容,如果未能解决你的问题,请参考以下文章

从使用 MySQL _FETCH 设置的字符串中删除双引号的最佳方法是啥?

php, mysql, "Else 在 while 语句之后

将所有mysql选定的行放入一个数组中

PHP $_SESSION 数组在前端生产构建时为空,但在开发构建时不是

使用PHP处理POST上传时$_FILES数组为何为空

循环遍历数组并从每个键创建 PHP 中的 HTML 锚点