保存具有相同值的数组的值

时间:2017-02-12 07:11:20

标签: php laravel laravel-5.2

我想要像这样保存最大值和最大值相同的数组。

array:5 [▼
 24 => 0.37647133759351
 20 => 0.37647133759351
 "20,24" => 0.22588280255611
 34 => 0.011763621730179
 "26,34" => 0.0094108973841436
]

因为2420是最大且具有相同的值,所以使用这种方式将它们保存到数据库中。

$hasilInsert = array();
    foreach ($sameValue as $key => $value) {
      $hasilInsert = array(
        'id_wi' => $wisatawan->id,
        'hasil' => $value['key'],
        'nilai' => $value['value']
        );
      $xy = HasilWisataTemp::insert($hasilInsert);
    }

如何处理? 谢谢。

1 个答案:

答案 0 :(得分:1)

使用max()找到最高值,然后array_keys()选择具有该值的键,然后array_flip()array_intersect_key()以帮助返回数组以前的结构。

...因此

$result = array_intersect_key( $array, array_flip( array_keys( $array, max( $array ) ) ) );

将为您提供此结果,以便您迭代并插入数据库...

Array
(
    [24] => 0.37647133759351
    [20] => 0.37647133759351
)

如果您想获得的最大重复条目,请先使用它...

$duplicates = array_intersect( $array, array_diff_assoc( $array, array_unique( $array ) ) );

在致电之前...

$result = array_intersect_key( $duplicates, array_flip( array_keys( $duplicates, max( $duplicates ) ) ) );