关于操纵“mysql_fetch_array”结果的问题

时间:2011-01-16 21:34:27

标签: php

默认情况下,mysql_fetch_array返回数字和关联数组togeather。此功能对于阅读非常有用,您可以获得值

或者声明: echo arr [1]; //圈 要么 echo arr [“shape”]; //圆

我是PHP的新手,当我想更改所获取的数组的值时,我遇到了麻烦: arr [1] = square;

我认为arr [“shape”]也会“正方形”,但我错了。 arr [“形状”]仍然是“圆圈”。 显然你必须将两个值都改为'circle'。

此外:我写了一个应该返回改变形状数组的函数(它是2D数组)。如果我使用第一个或

,我会得到不同的结果

第二行代码。

function ChangeShape($arr)
        {

            for ($i=0; $i<$count($arr); $i++)
            {
         1.    $arr[$i]["shape"] = 'square'; // fail to return changed $arr - it is (probably) reference to number counterpart

         2.    $arr[$i][2] = 'square';       // this WILL return changed $arr
            }
            }
            return $arr;
        }

我的问题: 1. PHP中是否有任何技术可以一次更改两个值? 2.在我的应用程序中,我使用关联昵称来访问数组值。但是当无法同时更改数字别名时,

是什么

最简单的方法吗?

感谢您阅读此内容...希望您回答。

非常感谢。

3 个答案:

答案 0 :(得分:0)

如果你只想把数据放在一个简单的数组中,你就可以通过把它放在几个数组中来简化它:

 $query = "SELECT * from myTable";
 $result = mysql_query($query) or die(mysql_error());
 $newArray = array();

 $i=0; 
 while($row = mysql_fetch_array($result)){
   array_push(  $newArray, $row[$i]['name'] );
 }
 print_r($newArray);
 $newArray[4] = "some other value than what came from the db";
 print_r($newArray);

为什么你的数据看起来很复杂似乎并不是很清楚,但这可能有助于清理它。

答案 1 :(得分:0)

你真的需要获取数字索引吗?至少根据您发布的内容,您似乎只想调用mysql_fetch_assoc来获取仅具有关联版本的数组。

mysql_fetch_array返回的数组中的“别名”实际上并不是别名...它只是将它插入结果数组两次,一次使用数字索引,一次使用列名。改变它们的唯一方法是为它们分配所需的值。

答案 2 :(得分:0)

看到这个例子,也许它不起作用是有道理的。它不是参考,也不会起作用。如果必须具有此功能,则可以像这样构建数组:

<?

$a='dog';
$b='cat';

$arr=array ('a' => &$a, 1 => &$a,'b' => &$b,'2' => &$b );

print_r($arr);

$a='horse';

print_r($arr);

$arr[1]='cow';

print_r($arr);

结果:

Array
(
    [a] => dog
    [1] => dog
    [b] => cat
    [2] => cat
)

Array
(
    [a] => horse
    [1] => horse
    [b] => cat
    [2] => cat
)
Array
(
    [a] => cow
    [1] => cow
    [b] => cat
    [2] => cat
)