默认情况下,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.在我的应用程序中,我使用关联昵称来访问数组值。但是当无法同时更改数字别名时,
是什么最简单的方法吗?
感谢您阅读此内容...希望您回答。
非常感谢。
答案 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
)