用return处理数组返回新的键名怎么解释呢?

<?php
function transform($lesson){
    return [
            'title' => $lesson['title'],
            'content' => $lesson['body'],
            'is_free' => (boolean) $lesson['free']
        ];
}

$lesson = array('title'=>'标题','body'=>'内容','free'=>1);
var_dump(transform($lesson));
//返回新的数组array('title'=>'标题','content'=>'内容','is_free'=>true)
?>

请问函数里的return是怎么改变原数组的键名的呢?这个用法有点不明白。

阅读 2.9k
6 个回答

没有改变啊,是创建了一个新的

你的是返回新的数组


$lesson = array('title'=>'标题','body'=>'内容','free'=>1);

//你的函数相当于这么
$lesson = array('title'=>'标题','body'=>'内容','free'=>1);
$lesson['is_free'] = $lesson['free'];
$lesson['content'] = $lesson['body'];
unset($lesson['free']);
unset($lesson['body']);
var_dump($lesson);

不是返回了一个新的数组吗,第三个元素的健值就是is_free

创建了一个新的数组,

$lesson1 = transform($lesson); 
$lesson = array('title'=>'标题','body'=>'内容','is_free2'=>1);
var_dump($lesson1); 
var_dump($lesson);

无论你改变 $lesson1 或者是改变 $lesson 都不影响!除非你是引用传递

$lesson1 = transform(&$lesson); 

脑袋短路了....谢谢各位回复。

这里面有key=>val的对应关系, transform函数将原来的val关联到新的key上去并由此返回了一个新结果.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题