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

PHP多维数组搜索与变量赋值问题求助

解决方案

你的核心需求是忽略customFieldValues的数组顺序,通过name字段匹配提取city和state对应的ID与值,以下是正确的实现代码:

// 假设原始数组变量为 $returncustdata
$custID = $returncustdata['contactId'];

// 初始化目标变量
$custFieldCityID = '';
$custFieldCity = '';
$custFieldStateID = '';
$custFieldState = '';

// 遍历customFieldValues数组匹配目标字段
foreach ($returncustdata['customFieldValues'] as $field) {
    if ($field['name'] === 'city') {
        $custFieldCityID = $field['customFieldId'];
        $custFieldCity = $field['value'][0];
    } elseif ($field['name'] === 'state') {
        $custFieldStateID = $field['customFieldId'];
        $custFieldState = $field['value'][0];
    }
}

// 可选:打印结果验证
var_dump($custID, $custFieldCityID, $custFieldCity, $custFieldStateID, $custFieldState);

原代码失败原因

你的嵌套foreach逻辑完全错误:

  • 第一层foreach($returncustdata as $row)遍历的是顶层数组的键值对,$row会依次是V(contactId的值)、Mrs Mder(name的值)这类字符串,以及customFieldValues数组本身。
  • 第二层foreach($row as $k)当$row是字符串时,会遍历单个字符,后续调用$k['customFieldValues']必然触发错误,完全偏离了遍历字段的目标。

核心逻辑说明

  1. 固定字段直接提取:contactId是顶层固定键,直接取值即可。
  2. 按name字段匹配:遍历customFieldValues的每个元素,通过name字段判断当前是否为目标字段,无需依赖数组索引位置。
  3. 处理值数组:从示例数组看,每个字段的value是单元素数组,直接取[0]即可获取对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:06:25