php foreach 修改数组不生效?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php foreach 修改数组不生效?相关的知识,希望对你有一定的参考价值。

foreach ($task_list as &$item)
foreach ($level_list as $ite)
if ($item['level'] == $ite['level'])
$item['levelname'] = $ite['name'];


foreach ($cate_list as $it)
if ($item['cid'] == $it['id'])
$item['name'] = $it['name'];
$item['ico'] = $it['ico'];


empty($item['name']) ? $item['name'] = $cate_list[0]['name'] :'';
empty($item['ico']) ? $item['ico'] = sp_config('web_logo') :'';

打印$item的值都改变了,但是为什么$task_list数组的值没有变呢?

参考技术A $task_list = [["cid"=>1,"level"=>"1","name"=>"liming"],["cid"=>2,"level"=>"2","name"=>"ddd"],["cid"=>3,"level"=>"3","name"=>"sfsdfsd"]];
$level_list = [["level"=>"1","name"=>"liming_l"],["level"=>"2","name"=>"ddd_l"],["level"=>"3","name"=>"sfsdfsd_l"]];
$cate_list = [["id"=>1,"ico"=>"001","name"=>"liming_c"],["id"=>2,"ico"=>"002","name"=>"ddd_c"],["id"=>3,"ico"=>"003","name"=>"sfsdfsd_c"]];
foreach ($task_list as &$item)
foreach ($level_list as $ite)
if ($item['level'] == $ite['level'])
$item['levelname'] = $ite['name'];


foreach ($cate_list as $it)
if ($item['cid'] == $it['id'])
$item['name'] = $it['name'];
$item['ico'] = $it['ico'];


empty($item['name']) ? $item['name'] = $cate_list[0]['name'] :'';
empty($item['ico']) ? $item['ico'] = sp_config('web_logo') :'';

print_r($task_list);

Array ( [0] => Array ( [cid] => 1 [level] => 1 [name] => liming_c [levelname] => liming_l [ico] => 001 ) [1] => Array ( [cid] => 2 [level] => 2 [name] => ddd_c [levelname] => ddd_l [ico] => 002 ) [2] => Array ( [cid] => 3 [level] => 3 [name] => sfsdfsd_c [levelname] => sfsdfsd_l [ico] => 003 ) )
正常逻辑数组里的值是改变了的,如果没改变这个需要查询一下数组的值匹配了
参考技术B &$item 改 $item

解决修改 Linux 下的 PHP 环境变量不生效的方法

这个问题出现服务器有多个 PHP 版本,php -vphpinfo()显示两个不同的版本

最近真的,都给朋友解决问题了。。。

phpinfo查看的 php 版本是 7.2.6,到 bash 去使用php -v查看的确是 5.4.2

直接上手先改环境变量,全局永久生效的那种~

vi /etc/profile

在最后加入对应的 PHP 路径

export PATH=$PATH:/usr/local/php/bin

保存,然后让配置生效

source /etc/profile

使用php -v查看还是 5.4.2 的版本,环境变量还是指向旧的,没生效

这样,先查一下对应的 php.ini,使用命令,查到有 3 个 php.ini

$ find / -name php.ini

/usr/local/php/etc/php.ini
/usr/local/php7.0/etc/php.ini
/etc/php.ini

然后使用命令查看 PHP 加载的是哪个配置文件,这个获取的是系统内的 php.ini 的位置,不是 Apache 或者 Nginx 加载的 php.ini 文件

$ php -i | grep php.ini

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

查找一下系统里的 PHP 相关目录

$ find / -name php

可以看到有一个/usr/bin/php

这个应该是服务器默认安装的 PHP

ok,使用命令删掉/usr/bin/php文件夹

rm -rf /usr/bin/php

别滥用,别敲错,回车

再让配置生效一下

source /etc/profile

这样,在 Bash 里查看的 PHP 版本也就是使用phpinfo()查看的版本了

 

 php运行版本位置

 

 

 

以上是关于php foreach 修改数组不生效?的主要内容,如果未能解决你的问题,请参考以下文章

求大神,PHP为啥修改了代码没有生效?

php为啥更改了配置文件不生效

解决修改 Linux 下的 PHP 环境变量不生效的方法

LNMP 环境,php.ini 修改之后为啥不生效

在集成环境中修改配置文件php.ini不生效的解决办法

LNMP 下 php.ini 文件修改后不生效