2017-02-10 3 views
0

мой массив из $hasil, как этомагазин массив с таким же значением

Array ([24] => 0.29883576167978 [20] => 0.29883576167978 [20,24] => 0.17930145700787 [34] => 0.12390406380914 [26,34] => 0.099123251047315) 

Я ищу попробовать, как этот

$newArray = array(); 
    $i = 0; 
    foreach ($hasil as $key => $value) { 
     $newArray[$i] = $key . '|' . $value; 
     $i++; 
    } 

    for ($i = 0; $i < sizeof($newArray); $i++) { 
     for ($j = 0; $j < sizeof($newArray) - 1; $j++) { 
     $n1 = explode("|", $newArray[$j]); 
     $n2 = explode("|", $newArray[$j+1]); 

     if (doubleval($n1[1]) < doubleval($n2[1])) { 
      $temp = $newArray[$j]; 
      $newArray[$j] = $newArray[$j + 1]; 
      $newArray[$j + 1] = $temp; 
     } 
     } 
    } 

    $idObjeks = array(); 
    $i = 0; 
    foreach ($newArray as $key) { 
     $ex1 = explode("|", $key); 
     $ex2 = explode(",", $ex1[0]); 
     foreach ($ex2 as $ky) { 
     $idObjeks[$i] = $ky; 
     $i++; 
     } 
    } 

    $hasil = array(); 
    foreach ($newArray as $key) { 
     $ex = explode("|", $key); 
     $hasil[$ex[0]] = $ex[1]; 
    } 

    // I think wrong in this code *** 
    // I want save $hasil with the biggest or the biggest with same value in database 
    // when I print_r there are not the same value and the biggest value 
    $sameValue = array(); 
    for ($i = 0; $i < sizeof($hasil) - 1; $i++) { 
     if (current($hasil) == next($hasil)) { 
     $sameValue[$i]['key'] = key($hasil); 
     $sameValue[$i]['value'] = current($hasil); 
     $sameValue[$i+1]['key'] = key($hasil); 
     $sameValue[$i+1]['value'] = next($hasil); 
     } else { 
     prev($hasil); 
     $sameValue[$i]['key'] = key($hasil); 
     $sameValue[$i]['value'] = current($hasil); 
     break; 
     } 
    } 

и хранить в базе данных, как это.

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

Что не так в этом коде? Или любой простой способ сохранить тот же массив значений в базе данных? Потому что я хочу, чтобы массив имел одинаковое значение.

Благодарим за внимание.

+0

Что ваш вопрос? – Chris

+0

Как сделать массив таким же значением? –

+0

Можете ли вы показать, что вы пробовали и что не удается? Что у вас есть * кажется * ok – Chris

ответ

1

Попробуйте

$xy = HasilWisataTemp::create([ 
    'id_wi' => $wisatawan->id, 
    'hasil' => $value['key'], 
    'nilai' => $value['value'] 
]); 

Поместите все эти атрибуты в нефтеналивной массиве.

protected $fillable = [ 
    'id_whi', 'hasil', 'nilai' 
]; 

Update Форматирование и сохранение массива

$arr = [ 
    [24] => 0.29883576167978, 
    [20] => 0.29883576167978 
]; 

foreach($arr as $key => $value) { 
    HasilWisataTemp::create([ 
     'id_wi' => $wisatawan->id, 
     'hasil' => $value['key'], //24... 20 
     'nilai' => $value['value'] // 0.29883576167978.... 0.29883576167978 
    ]); 
} 
+0

Ошибка 'MassAssignmentException в Model.php строка 452: id_wi' –

+0

Проверить обновления в ответе – EddyTheDove

+0

Я думаю, что это какая-то неправильная логика, когда я нахожу массив с одинаковым значением. Не когда я храню массив. –

Смежные вопросы