PHP中JSON对象填充数组及零件搜索仅返回首个结果的问题
问题解答
1. 解决搜索仅返回首个匹配项的问题
你的getPartByName函数找到第一个符合条件的零件后就直接return了,所以只会返回单个匹配项。要获取所有匹配结果,需要修改函数来收集所有符合条件的零件:
修改后的函数代码
function getPartByName($name) { $parts = getParts(); $matchedParts = []; // 创建空数组存储所有匹配项 foreach ($parts as $part) { if (str_starts_with($part['name'], $name)) { $matchedParts[] = $part; // 将匹配零件加入数组 } } return $matchedParts; // 返回所有匹配项的数组 }
调用函数并输出所有结果
调用时需要循环遍历返回的数组,逐个输出匹配内容(这里以输出名称和价格为例,你可以扩展成HTML表格形式):
$searchedPart = $_POST['searched-part']; $partToBeSearched = trim($searchedPart); $matchedParts = getPartByName($partToBeSearched); // 循环输出所有匹配零件 foreach ($matchedParts as $part) { echo "名称:{$part['name']},价格:{$part['price']}<br>"; // 如果要生成HTML表格,可替换为对应的<tr><td>标签 }
2. 如何用JSON对象填充数组
在PHP中,常用以下两种方式实现:
方式一:解析JSON文件/字符串为数组
通过json_decode函数将JSON格式的内容解析为PHP数组,第二个参数设为true会得到关联数组(对应JSON对象):
// 从JSON文件读取内容并解析为数组 $jsonContent = file_get_contents(__DIR__ . '/parts.json'); $partsArray = json_decode($jsonContent, true); // $partsArray就是由JSON对象填充的数组
方式二:手动构建包含JSON对象的数组
如果你需要手动组装,可以将解析后的JSON对象(关联数组)逐个添加到目标数组中:
$partsArray = []; // 模拟一个JSON对象解析后的关联数组 $newPart = [ "name" => "新零件", "category" => "新类别", "price" => "100" ]; $partsArray[] = $newPart; // 将对象添加到数组中
内容的提问来源于stack exchange,提问作者Oreo Developers
相关产品推荐
相关产品推荐

