我有一个PHP问题不懂,是关于数组,下面有详细讲↓

qq_35969068 2019-02-15 09:58:51
请问这串代码 $values[$k]= isset($v[$key]) ? $v[$key] : ''; 中的 $values[$k] 和 $v[$key] 是什么意思。麻烦了各位大神。

附上源代码:

<?php
function test($array=array(),$key='',$paixu=true){
$result=array();

foreach($array as $k => $v){
$values[$k]= isset($v[$key]) ? $v[$key] : '';
}
unset($v);
$paixu ? asort($values) : arsort($values);

foreach ($values as $k => $v){
$result[$k] = $array[$k];
}
return $result;
}

$data = array(
array('post_id'=>1,'title'=>'如何学好PHP','reply_num'=>582),
array('post_id'=>2,'title'=>'PHP数组常用函数汇总','reply_num'=>182),
array('post_id'=>3,'title'=>'PHP字符串常用函数汇总','reply_num'=>982),
);

$paixuhou=test($data,'reply_num',true);
echo "<pre>";
print_r($paixuhou);
?>
...全文
253 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42961652 2019-02-18
  • 打赏
  • 举报
回复
引用 3 楼 qq_35969068 的回复:
我想问一下,变量后面加一个中括号是什么意思。如$v[$key] 和 $values[$k] 像这样的。




这是数组的键
刘欣 2019-02-17
  • 打赏
  • 举报
回复
我也觉得该这样,还有如果$result[¥k] = ¥array[¥k]; 这样写返回的结果没有错吗?$result这个数组下标该从0开始吧而不是$array保持的下标
yt_php 2019-02-17
  • 打赏
  • 举报
回复
变量后面加一个中括号:数组的下标
qq_35969068 2019-02-16
  • 打赏
  • 举报
回复
真的太谢谢您了。
qq_35969068 2019-02-16
  • 打赏
  • 举报
回复
我想问一下,变量后面加一个中括号是什么意思。如$v[$key] 和 $values[$k] 像这样的。
yt_php 2019-02-15
  • 打赏
  • 举报
回复

foreach ($values as $k => $v){
        $result[$k] = $array[$k];
 }
$result[$k] 这里 $k应该没必要,我觉的应该去掉,$result[] = $array[$k];才对。
yt_php 2019-02-15
  • 打赏
  • 举报
回复
这个test函数,是一个将二维数组的子数组,按照子数组的某个键名对应的键值进行关联排序。 test($data,'reply_num',true) 帖子按照回复数量'reply_num'升序排列。

<?php
function test($array=array(),$key='',$paixu=true)
{
    $result=array(); //定义最终返回的数组

    foreach($array as $k => $v){
        $values[$k]= isset($v[$key]) ? $v[$key] : '';
    }
    /**
     * 第一循环
     *
     * $k = 0
     * $v = array('post_id'=>1,'title'=>'如何学好PHP','reply_num'=>582),
     *
     * $key = reply_num
     * $v[$key] = 582
     *
     * $values[0] = 582
     *
     * 最终结果
     * $values = [0=>582 , 1=>182 , 2=>982]
     */
    unset($v);

    $paixu ? asort($values) : arsort($values);
    /**
     * sort()函数,按照键值排序,键名将会被重置,不保持关联关系
     *
     * asort() a=assoc关联 sort排序 关联升序:关联排序即按照键值升序排序,保持键名=>键值的对应关系
     * arsort() r=reserve反转 关联降序
     *
     * 最终结果
     * $values = [1=>182 , 0=>582 , 2=>982]
     */

    foreach ($values as $k => $v){
        $result[$k] = $array[$k];
    }
     /*
     最终结果
      $result = array(
     	array('post_id'=>2,'title'=>'PHP数组常用函数汇总','reply_num'=>182),
		array('post_id'=>1,'title'=>'如何学好PHP','reply_num'=>582),
		array('post_id'=>3,'title'=>'PHP字符串常用函数汇总','reply_num'=>982),
	);*/

    return $result;
}

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧