如何清理PHP中mysqli_fetch_array返回数组的数字索引仅保留列名
PHP双索引数组保留列名键解决方案
你使用array_unique()无法达到预期是正常的,该函数的作用是去除数组中的重复值,和删除数字索引的需求完全不匹配。
最优方案:修改数据读取逻辑
mysqli_fetch_array()默认使用MYSQLI_BOTH作为结果模式,所以会同时返回数字索引和列名关联索引,你只需要调整读取参数,就能直接得到仅含列名键的数组,无需后续额外处理:
// 方案1:给mysqli_fetch_array指定MYSQLI_ASSOC参数 $gti = mysqli_fetch_array($get_trans_info_query, MYSQLI_ASSOC); $gt = mysqli_fetch_array($get_trans_query, MYSQLI_ASSOC); // 方案2:直接使用封装好的mysqli_fetch_assoc()函数,效果完全一致 $gti = mysqli_fetch_assoc($get_trans_info_query); $gt = mysqli_fetch_assoc($get_trans_query);
调整后读取出来的数组就只会保留数据库列名作为键,不会出现数字索引。
备选方案:处理已生成的双索引数组
如果你不方便修改原有数据读取逻辑,已经拿到了同时带数字索引和列名索引的数组,可以通过以下方法过滤掉数字键:
// 封装过滤方法:仅保留字符串类型的键(即数据库列名) function filterAssocKeyOnly($originArr) { return array_filter($originArr, function($key) { return is_string($key); }, ARRAY_FILTER_USE_KEY); } // 调用方法处理已有数组 $gt = filterAssocKeyOnly($gt); $gti = filterAssocKeyOnly($gti);
内容的提问来源于stack exchange,提问作者Lukas
相关产品推荐
相关产品推荐

