Php 应用数组_-unique
我有代码来获取由空格分隔的地址,然后获取关于该地址的区域详细信息,因此每次sql结果存储在数组“resultArray”中,该结果被推送到另一个数组“returnArray”,然后以json格式显示。我想删除returnArray中重复的区域id,所以我使用了“array\u unique”但它不起作用。请给出一些建议 示例代码:Php 应用数组_-unique,php,sql,arrays,Php,Sql,Arrays,我有代码来获取由空格分隔的地址,然后获取关于该地址的区域详细信息,因此每次sql结果存储在数组“resultArray”中,该结果被推送到另一个数组“returnArray”,然后以json格式显示。我想删除returnArray中重复的区域id,所以我使用了“array\u unique”但它不起作用。请给出一些建议 示例代码: <?php include_once 'main.php'; $dac = new Main(); $add = $_POST[
<?php
include_once 'main.php';
$dac = new Main();
$add = $_POST['address'];
$noLines = sizeof($add);
$resultArray=array();
$returnArray=array();
$returnArrayMain=array();
while ($noLines>0)
{
$resultArray=array();
$result = $dac->area_detail($add[$noLines-1]);
$count=mysql_num_rows($result);
while($row = mysql_fetch_assoc($result))
{
$resultArray[]=array('area_id' => $row['area_id'],'area_name' => $row['area_name'],'area_GISlat'=>$row['area_GISlat'],'area_GISlon'=>$row['area_GISlon']);
}
array_push($returnArray, $resultArray) ;
$noLines = $noLines-1;
}
$returnArrayMain = array_unique($returnArray);
echo json_encode($returnArrayMain);
?>
试试这个
$returnArrayMain = uniqueAssocArray($returnArray, 'area_id');
echo json_encode($returnArrayMain);
function uniqueAssocArray($array, $uniqueKey) {
if (!is_array($array)) {
return array();
}
$uniqueKeys = array();
foreach ($array as $key => $item) {
$groupBy=$item[$uniqueKey];
if (isset( $uniqueKeys[$groupBy]))
{
//compare $item with $uniqueKeys[$groupBy] and decide if you
//want to use the new item
$replace= ...
}
else
{
$replace=true;
}
if ($replace) $uniqueKeys[$groupBy] = $item;
}
return $uniqueKeys;
}
试试这个
$returnArrayMain = uniqueAssocArray($returnArray, 'area_id');
echo json_encode($returnArrayMain);
function uniqueAssocArray($array, $uniqueKey) {
if (!is_array($array)) {
return array();
}
$uniqueKeys = array();
foreach ($array as $key => $item) {
$groupBy=$item[$uniqueKey];
if (isset( $uniqueKeys[$groupBy]))
{
//compare $item with $uniqueKeys[$groupBy] and decide if you
//want to use the new item
$replace= ...
}
else
{
$replace=true;
}
if ($replace) $uniqueKeys[$groupBy] = $item;
}
return $uniqueKeys;
}
试试这个
$returnArrayMain = array_map("unserialize", array_unique(array_map("serialize", $resultArray)));
试试这个
$returnArrayMain = array_map("unserialize", array_unique(array_map("serialize", $resultArray)));
下面是一个测试关联数组的解决方案:
// this is testing array as you are using:
$resultArray = array(
array(
'area_id' => 12,
'area_name' => 'test',
'area_GISlat'=>'test2',
'area_GISlon'=>'test3'),
array(
'area_id' => 11,
'area_name' => 'test',
'area_GISlat'=>'test2',
'area_GISlon'=>'test3'),
array(
'area_id' => 12,
'area_name' => 'test',
'area_GISlat'=>'test2',
'area_GISlon'=>'test3')
);
// take a temporary arry
$temporaryArr = array();
// initialize key's array
$arrayKey = array();
foreach ( $resultArray as $key => $values ) {
if ( !in_array($values, $temporaryArr) ) {
$temporaryArr[] = $values; // store values in temporary array
$arrayKey[$key] = true; // store all keys in another array
}
}
// now use array_intersect_key function for intersect both array.
$requiredArr = array_intersect_key($resultArray, $arrayKey);
echo "<pre>";
print_r($requiredArr);
已删除重复的阵列
来自PHP手册:
error_reporting(E_ALL);
ini_set('display_errors', 1);
-使用用于比较的键计算数组的交集
旁注:
error_reporting(E_ALL);
ini_set('display_errors', 1);
在打开
之后,还要将错误报告添加到文件顶部,这是一个测试关联数组的解决方案:
// this is testing array as you are using:
$resultArray = array(
array(
'area_id' => 12,
'area_name' => 'test',
'area_GISlat'=>'test2',
'area_GISlon'=>'test3'),
array(
'area_id' => 11,
'area_name' => 'test',
'area_GISlat'=>'test2',
'area_GISlon'=>'test3'),
array(
'area_id' => 12,
'area_name' => 'test',
'area_GISlat'=>'test2',
'area_GISlon'=>'test3')
);
// take a temporary arry
$temporaryArr = array();
// initialize key's array
$arrayKey = array();
foreach ( $resultArray as $key => $values ) {
if ( !in_array($values, $temporaryArr) ) {
$temporaryArr[] = $values; // store values in temporary array
$arrayKey[$key] = true; // store all keys in another array
}
}
// now use array_intersect_key function for intersect both array.
$requiredArr = array_intersect_key($resultArray, $arrayKey);
echo "<pre>";
print_r($requiredArr);
已删除重复的阵列
来自PHP手册:
error_reporting(E_ALL);
ini_set('display_errors', 1);
-使用用于比较的键计算数组的交集
旁注:
error_reporting(E_ALL);
ini_set('display_errors', 1);
另外,在打开后立即将错误报告添加到文件顶部请查看:我尝试了他们提到的方法,但由于它位于两个数组内而无效。请查看:我尝试了他们提到的方法,但由于它位于两个数组内而无效。sry忘记提供函数。。我在回答中加了函数,我忘了加函数。。我在回答中增加了函数