PHP多数组值合并求助:如何整合标题、描述、图片数组为指定格式
如何合并数组实现指定的结构?
看起来你是想把描述和图片的键值对直接整合到同一个数组中,而不是让图片数组成为主数组的子元素对吧?你当前使用array_push($mainArray,$data)的方式,会把整个图片键值对数组作为一个单独的元素(索引为0的子数组)添加到主数组里,这就是为什么输出里会出现那个额外的子数组。
解决方案1:直接合并数组(注意键名覆盖问题)
如果你的需求就是要把两个数组的键值对直接放在一起,哪怕相同键名的值会被覆盖,可以用array_merge替代array_push:
// 先创建标题与描述的键值对数组 $mainArray = array_combine($_POST['title'], $_POST['Description']); // 创建标题与图片的键值对数组 $data = array_combine($_POST['title'], $images); // 合并两个数组,将图片的键值对直接并入主数组 $mainArray = array_merge($mainArray, $data); echo '<pre>'; print_r($mainArray); echo '</pre>';
⚠️ 注意:PHP的数组不允许重复的键名,当$mainArray和$data有相同的键(比如你的First和Second),$data里的值会覆盖$mainArray中原有的值。
解决方案2:更合理的数组结构(避免键名冲突)
如果你的实际需求是要同时保留每个标题对应的描述和图片,更推荐把结构改成每个标题对应一个包含描述和图片的子数组,这样不会有键名冲突的问题:
$mainArray = []; // 遍历标题数组,将对应位置的描述和图片整合到子数组中 foreach ($_POST['title'] as $index => $title) { $mainArray[$title] = [ 'description' => $_POST['Description'][$index], 'image' => $images[$index] ]; } echo '<pre>'; print_r($mainArray); echo '</pre>';
这个方案的输出结构会更清晰:
Array ( [First] => Array ( [description] => FFFFFFFFFFFFFFFF [image] => eae2d7b3f20250def1892bae1abaf07f.png ) [Second] => Array ( [description] => ssss [image] => ea7ca514d1ef580f85fb42c7cb425462.png ) )
内容的提问来源于stack exchange,提问作者Gaurav Jariwala
相关产品推荐
相关产品推荐

