Php 关于“mysql\u fetch\u array”结果操作的问题
默认情况下,mysql_fetch_数组同时返回数值数组和关联数组。此函数用于读取,同时可以获取值 通过声明: 回波arr[1]//圆圈 或 回波阵列[形状]//圈 我是PHP新手,当我想更改所获取数组的值时遇到了麻烦: arr[1]=平方 我以为arr[shape]也会是“正方形”,但我错了。arr[形状]仍然是“圆形”。 显然,您必须将这两个值都更改为“圆” 此外:我编写了一个函数,它应该返回改变了形状的数组,即2D数组。如果我使用第一种或第二种方法,我会得到不同的结果 第二行代码Php 关于“mysql\u fetch\u array”结果操作的问题,php,Php,默认情况下,mysql_fetch_数组同时返回数值数组和关联数组。此函数用于读取,同时可以获取值 通过声明: 回波arr[1]//圆圈 或 回波阵列[形状]//圈 我是PHP新手,当我想更改所获取数组的值时遇到了麻烦: arr[1]=平方 我以为arr[shape]也会是“正方形”,但我错了。arr[形状]仍然是“圆形”。 显然,您必须将这两个值都更改为“圆” 此外:我编写了一个函数,它应该返回改变了形状的数组,即2D数组。如果我使用第一种或第二种方法,我会得到不同的结果 第二行代码 func
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.在我的应用程序中,我使用assoc昵称访问数组值。但当无法同时更改数字别名时,什么是
最简单的方法是什么
谢谢你读到最后。。。希望你能回答
非常感谢。如果您只想在获取数据后将其放在一个简单的数组中,您可以通过将其放在几个数组中来简化它:
$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);
为什么你的数据看起来如此复杂,这似乎并不十分清楚,但这可能有助于澄清问题 您真的需要获取数字索引吗?至少根据您发布的内容,您似乎只想调用mysql\u fetch\u assoc来获取一个仅具有关联版本的数组
mysql\u fetch\u数组返回的数组中的别名不是真正的别名。。。它只需在结果数组中插入两次,一次是数字索引,一次是列名称。更改这两个参数的唯一方法是为它们指定所需的值。请参见此示例,也许这会解释为什么它不起作用。这不是一个参考,否则它会起作用。如果必须具备此功能,您可以按如下方式构建阵列:
<?
$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);
这听起来有点复杂。为什么首先需要索引版本和关联版本?人们通常会做的是将记录中的结果(数字索引或关联索引的结果)提取到另一个变量中,并在其中进行操作。@Pekka>在某些地方,我使用数字表示,有时使用更友好的assoc字符串。我曾在其他编程语言中使用过一个或另一个选项interchargebly。我正在学习PHP。但这并不是你刚才说的坏主意。我碰巧认为,在大多数情况下,使用数字表示法是一个糟糕的主意,因为如果你对你的查询做一个小的更改,你可能会破坏所有的东西。我看不出有什么理由前后矛盾。有没有一个很好的理由让你在某些地方使用数值,而在另一些地方使用关联值?我没有充分的理由。。。我想知道,是否有可能通过两种方式处理值,并通过两种方式修改它们。至少我希望PHP能为我做这件事…>所以这就是我害怕发生的事情。我使用debugger查看正在发生的事情,第二个别名值似乎是通过引用该数字值给出的。更改该引用最后并没有改变任何内容,但更改数值更改了返回的表…这很有意义。。。懂我想我必须简化我的工作。。。塔克斯
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
)