如何用array_map()提取数组中指定的ISBN与价格键值对
用
array_map()提取多维数组指定键值对的解决方案 嘿,作为PHP新手能自己尝试解决问题已经超棒啦!针对你想用array_map()提取多维数组里的isbn和price键值对的需求,我来给你讲清楚具体怎么实现~
核心思路
array_map()的作用是遍历数组中的每个元素,对每个元素执行你定义的处理逻辑,最后把所有处理后的结果整合成一个新数组返回。我们只需要给每个子数组返回一个仅包含isbn和price的新数组就行。
完整代码示例
首先先把你的原始数组整理成标准的PHP数组格式:
$books = [ ["isbn" => "9789737953766", "author" => "Ágoston Katalin, Domokos József, Márton Lőrinc", "title" => "Érzékelők és jelátalakítók", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2007-02-01", "price" => 15.58], ["isbn" => "9789731970066", "author" => "Tőkés Gyöngyvér", "title" => "Szakma vagy hivatás? ", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2008-07-25", "price" => 32.3], ["isbn" => "9789738598546", "author" => "Nagy László (szerk.)", "title" => "Tanulmányok a természettudományok tárgyköréből", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2002-01-01", "price" => 13], ["isbn" => "9789737953612", "author" => "Oláh-Gál Róbert", "title" => "Az informatika alapjai közgazdász- és mérnökhallgatóknak", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2007-01-01", "price" => 15.58], ["isbn" => "9789737953797", "author" => "Józon Mónika", "title" => "Általános jogelméleti és polgári jogi ismeretek", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2007-01-30", "price" => 36.72], ["isbn" => "9789737953834", "author" => "Kakucs András", "title" => "Áramlástan", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2007-10-01", "price" => 34.64], ["isbn" => "9789737953827", "author" => "Szilágyi Györgyi, Flóra Gábor, Ari Gyula", "title" => "Bihar megye gazdasági-társadalmi fejlődése", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2007-11-01", "price" => 38.48], ["isbn" => "9789737953803", "author" => "Majdik Kornélia, Tonk Szende-Ágnes", "title" => "Biokémiai alkalmazások", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2007-06-01", "price" => 19.46], ["isbn" => "9789737953902", "author" => "Urák István", "title" => "Date despre arahnofauna din bazinul superior al Oltului", "pub_name" => "Scientia Kiadó, Kolozsvár", "pub_date" => "2008-01-01", "price" => 28.78] ];
然后用array_map()配合匿名函数处理:
$newArray = array_map(function($item) { // 对每个子数组,只返回isbn和price键值对 return [ 'isbn' => $item['isbn'], 'price' => $item['price'] ]; }, $books);
额外优化(可选)
如果担心某些子数组可能缺失isbn或price键(虽然你的示例里都存在),可以用PHP的空合并运算符??来避免报错,给缺失的键设置默认值:
$newArray = array_map(function($item) { return [ 'isbn' => $item['isbn'] ?? null, 'price' => $item['price'] ?? null ]; }, $books);
这样处理后,$newArray就完全符合你期望的格式啦——每个元素都是包含isbn和price的子数组,而不是一维数组。
内容的提问来源于stack exchange,提问作者Galterius
相关产品推荐
相关产品推荐

