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

PHP双数组值对比问题:如何为数据库数组添加id字段

解决方法:给数组添加ID同时保留对比功能

你原来的$dbArray是一维数组,只存了处理后的名字字符串,直接追加ID会让数组结构混乱(既有名字又有ID),既没法正常区分数据,还会破坏原有的对比逻辑。下面给你两种可行的改造方案:

方案一:用关联数组存储ID和名字

把$dbArray改成每个元素都是包含ID和处理后名字的关联数组,这样既能保留所有数据,又能通过提取名字数组来完成对比:

<?php
// database names + ids
$dbArray = array();
while($rowMatch = mysqli_fetch_array($sqlTitlePerson)){
    $processedName = trim(preg_replace("/\([^)]*\)/", '', $rowMatch['name']));
    // 存入关联数组,同时保留id和处理后的name
    $dbArray[] = [
        'id' => $rowMatch['id'],
        'name' => $processedName
    ];
}

// 提取所有数据库中的名字到单独数组,用于对比
$dbNames = array_column($dbArray, 'name');

// tmdb names
$tmdbArray = array();
foreach($credits['cast'] as $credit){
    // 用提取出的名字数组做对比
    if(!in_array($credit['name'], $dbNames)){
        $tmdbArray[] = $credit['name'];
    }
}

foreach ($tmdbArray as $castArray){
    echo $castArray.'<br>';
}

// 如果需要使用数据库中的ID,比如遍历$dbArray:
// foreach($dbArray as $item) {
//     echo 'ID: '.$item['id'].', Name: '.$item['name'].'<br>';
// }
?>

方案二:用名字作为键,ID作为值(更高效的对比方式)

如果你的场景只需要通过名字判断是否存在,同时需要关联对应的ID,可以用处理后的名字作为数组键,ID作为值,这样对比时用isset()更高效:

<?php
// database names as keys, ids as values
$dbArray = array();
while($rowMatch = mysqli_fetch_array($sqlTitlePerson)){
    $processedName = trim(preg_replace("/\([^)]*\)/", '', $rowMatch['name']));
    // 用处理后的名字做键,ID做值
    $dbArray[$processedName] = $rowMatch['id'];
}

// tmdb names
$tmdbArray = array();
foreach($credits['cast'] as $credit){
    // 直接检查键是否存在,比in_array更高效
    if(!isset($dbArray[$credit['name']])){
        $tmdbArray[] = $credit['name'];
    }
}

foreach ($tmdbArray as $castArray){
    echo $castArray.'<br>';
}

// 如果需要获取某个名字对应的ID:
// $targetName = "张三";
// if(isset($dbArray[$targetName])) {
//     echo '对应的ID是:'.$dbArray[$targetName];
// }
?>

为什么你之前的尝试无效?

你直接用$dbArray[] = $rowMatch['id']会让数组变成[名字1, 名字2, ID1, ID2, ...]的混合结构,in_array对比名字时会把ID也当成候选值,逻辑完全混乱,而且你也无法区分数组里的元素到底是名字还是ID,所以必须调整数组结构来同时存储两种数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07