Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 关于“mysql\u fetch\u array”结果操作的问题_Php - Fatal编程技术网

Php 关于“mysql\u fetch\u array”结果操作的问题

Php 关于“mysql\u fetch\u array”结果操作的问题,php,Php,默认情况下,mysql_fetch_数组同时返回数值数组和关联数组。此函数用于读取,同时可以获取值 通过声明: 回波arr[1]//圆圈 或 回波阵列[形状]//圈 我是PHP新手,当我想更改所获取数组的值时遇到了麻烦: arr[1]=平方 我以为arr[shape]也会是“正方形”,但我错了。arr[形状]仍然是“圆形”。 显然,您必须将这两个值都更改为“圆” 此外:我编写了一个函数,它应该返回改变了形状的数组,即2D数组。如果我使用第一种或第二种方法,我会得到不同的结果 第二行代码 func

默认情况下,mysql_fetch_数组同时返回数值数组和关联数组。此函数用于读取,同时可以获取值

通过声明: 回波arr[1]//圆圈 或 回波阵列[形状]//圈

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

我以为arr[shape]也会是“正方形”,但我错了。arr[形状]仍然是“圆形”。 显然,您必须将这两个值都更改为“圆”

此外:我编写了一个函数,它应该返回改变了形状的数组,即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.在我的应用程序中,我使用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
)