You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python转PHP后的多组数据合并为单个数组?

解决方案:合并独立数组并处理Python字节串格式数据

看起来你现在需要把两个独立的PHP数组合并成一个包含子数组的单个数组,同时还要处理那些从Python传递过来的字节串格式数据对吧?我来给你一步步解决这个问题:

1. 合并两个独立数组

首先,你手里的两个独立数组,只需要简单把它们放到一个新数组里,就能得到包含子数组的单个数组了。或者用array_merge()函数也能实现:

// 你的两个原始数组
$salon1 = [
    'fri_hours' => "b'9:00 AM \xe2\x80\x93 8:00 PM'",
    'wed_hours' => "b'9:00 AM \xe2\x80\x93 8:00 PM'",
    'sun_hours' => "b'Closed'",
    'photo_reference' => '',
    'phone_number' => b'+1 212-354-1006',
    'state' => b'New York',
    'country' => b'United States',
    'place_id' => 'ChIJ8cFYDKpZwokRpC04mEYm20s',
    'thu_hours' => "b'9:00 AM \xe2\x80\x93 8:00 PM'",
    'business_name' => b'CarLeo Hair Salon',
    'address' => b'22West 38th Street',
    'city' => b'New York',
    'mon_hours' => "b'9:00 AM \xe2\x80\x93 6:00 PM'",
    'type' => 'beauty salon',
    'sat_hours' => "b'Closed'",
    'tue_hours' => "b'9:00 AM \xe2\x80\x93 8:00 PM'",
    'postal_code' => '10018',
    'website' => 'http://www.carleohairsalon.com/',
    'rating' => 4.6
];

$salon2 = [
    'fri_hours' => "b'8:00 AM \xe2\x80\x93 8:00 PM'",
    'wed_hours' => "b'8:00 AM \xe2\x80\x93 8:00 PM'",
    'sun_hours' => "b'Closed'",
    'photo_reference' => 'CmRaAAAAe8XIMwcPu3uhohYjJ-dQt69rtZ-x2XJ-I28USF-LphSaVH4Gt-_JUmB06TGnOKKmAqSjnhGuFqUKb7pitV1twViGVE7znVYLSdRYZ72LKjtlXT47YapfEreCmd9lK1R8EhCEJ2Pb2Fpe2sbfbOF3hXgmGhRaJbdZKiF8S0GxdzVj3r7mQphVtw',
    'phone_number' => b'+1 212-688-6498',
    'state' => b'New York',
    'country' => b'United States',
    'place_id' => 'ChIJ0SFDYuVYwokRXJvyfmR9kec',
    'thu_hours' => "b'8:00 AM \xe2\x80\x93 8:00 PM'",
    'business_name' => b'Mizu Salon',
    'address' => b'505Park Avenue',
    'city' => b'New York',
    'mon_hours' => "b'10:00 AM \xe2\x80\x93 6:00 PM'",
    'type' => 'beauty salon',
    'sat_hours' => "b'9:00 AM \xe2\x80\x93 7:00 PM'",
    'tue_hours' => "b'8:00 AM \xe2\x80\x93 7:00 PM'",
    'postal_code' => '10022',
    'website' => 'http://www.mizuforhair.com/',
    'rating' => 4.4
];

// 合并成单个包含子数组的数组(两种方式选其一即可)
$combinedSalons = [$salon1, $salon2];
// 或者:$combinedSalons = array_merge([$salon1], [$salon2]);

2. 处理Python字节串格式的数据

你会发现很多字段是b'xxx'或者"b'xxx'"的格式,这是Python的bytes对象被转成字符串后的遗留格式,我们需要把它们转换成正常的UTF-8字符串。可以写一个辅助函数来处理:

function decodePythonBytes($value) {
    // 处理带b'前缀和'后缀的字符串
    if (is_string($value) && str_starts_with($value, 'b\'') && str_ends_with($value, '\'')) {
        $cleaned = substr($value, 2, -1);
        // 解码UTF-8特殊字符(比如em dash)
        return html_entity_decode($cleaned, ENT_QUOTES, 'UTF-8');
    } 
    // 处理PHP原生的bytes类型(PHP 7.1+支持)
    elseif (is_bytes($value)) {
        return (string)$value;
    }
    // 其他类型直接返回
    return $value;
}

// 遍历合并后的数组,批量处理每个字段
foreach ($combinedSalons as &$salon) {
    foreach ($salon as $key => &$value) {
        $value = decodePythonBytes($value);
    }
    unset($value); // 释放引用避免后续意外修改
}
unset($salon);

3. 验证最终结果

现在你可以打印处理后的数组,看看是否符合预期:

print_r($combinedSalons);

这时候所有字段都会是正常的可读字符串,比如business_name会显示为CarLeo Hair Salon,fri_hours会显示为9:00 AM – 8:00 PM(em dash显示正常)。

为什么之前的foreach没得到预期结果?

大概率是你没正确合并两个数组,或者没有处理这些字节串格式的数据,导致输出时还是看到带b'的内容,误以为循环没生效。另外要注意,PHP中遍历修改数组元素时,需要用&引用元素,否则修改的只是临时副本,不会影响原数组。

内容的提问来源于stack exchange,提问作者Dhaval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:52:38