gleiche Arrays summieren

sanktusm

New member
PHP:
$array = Array(0,0, 2);
$array2 = Array(0,0,2);
$array3 = Array(0,2,0);
$array4 = Array(0,2,0),
$array5 = Array(1, 0, 1);
$array6 = Array(2,0,0);
$array7 = Array(1,0,0);
Mit diesem Script werden aber die Werte nur unsummiert ausgegeben, also

PHP:
$array = Array(0,0, 2);

$array3 = Array(0,2,0);

$array5 = Array(1, 0, 1);
$array6 = Array(2,0,0);
$array7 = Array(1,0,0);
Ich habe keinen blassen Schimmer wie ich das hinkriegen so hinkriegen kann

PHP:
$array = Array(0,0, 4);

$array3 = Array(0,4,0);

$array5 = Array(1, 0, 1);
$array6 = Array(2,0,0);
$array7 = Array(1,0,0);

Einen Ansatz habe ich mit diesem Script anzubieten:

PHP:
function addieren ($array, $key, $start) {

  foreach ($array[$key]['k_glob'] as $id => $value_2) {
      if (!isset($sumArray[$id])) {
          if($start == true)
          $sumArray[$id] = $value_2;
          else
          $sumArray[$id] = 0;


      }
      $sumArray[$id]+=$value_2;
  }

return $sumArray;

}

function gleiche_arrays_summieren($input_arr) {

  $neues_array_out = Array();

  $anzahl_sheets = Array();

  $sumArray = Array();

  $is_addiert = Array();

  $is_hinzugefuegt = Array();

  $out_arr_std_l = Array();

  $anzahl_arrays = count($input_arr);

  $is_addiert_temp_1 = Array();

  $is_addiert_temp_2 = Array();

    foreach($input_arr as $key => $value) {

       if(empty($input_arr[$key - 1]['k_glob'])) {

         $start = true;

         $sumArray = addieren ($input_arr, $key, $start);



       }

        if(!empty($input_arr[$key + 1]['k_glob'])) {

          $start = false;

          if(arrays_verleichen($input_arr[$key - 1]['k_glob'], $input_arr[$key]['k_glob']) == true AND arrays_verleichen($input_arr[$key + 1]['k_glob'], $input_arr[$key]['k_glob']) == false)
          $neues_array_out[$key] = $sumArray;

          $sumArray = addieren ($input_arr, $key, $start);

          if(arrays_verleichen($input_arr[$key + 1]['k_glob'], $input_arr[$key]['k_glob']) == false)
          $neues_array_out[$key] = $sumArray;

        }

         if(empty($input_arr[$key + 1]['k_glob'])) {
          $start = false;

           $sumArray = addieren ($input_arr, $key, $start);

           $neues_array_out[$key] = $sumArray;

        }

    }

return array('k_glob' => $neues_array_out, 'std_l' => $out_arr_std_l);


}

Ich hoffe Ihre könnte damit was anfangen, ich bin sehr verzweifelt
 
Zuletzt bearbeitet von einem Moderator:
Mit erschließt sich zwar der Grund dafür nicht und dein Skript ist auch mehr als verwirrend...
PHP:
<?php
$arrays = [
	[0, 0, 2],
	[0, 0, 2],
	[0, 2, 0],
	[0, 2, 0],
	[1, 0, 1],
	[2, 0, 0],
	[1, 0, 0]
];
$summed = [];
$result = [];
$numberOfArrays = count($arrays);
foreach ($arrays as $i => $array){
	if (array_key_exists($i, $summed)){
		continue;
	}
	$numberOfEntries = count($array);
	$sum = 1;
	for ($j = $i + 1; $j < $numberOfArrays; $j += 1){
		if (count($arrays[$j]) === $numberOfEntries){
			$allEqual = true;
			for ($k = 0; $k < $numberOfEntries; $k += 1){
				if ($array[$k] !== $arrays[$j][$k]){
					$allEqual = false;
					break;
				}
			}
			if ($allEqual){
				$sum += 1;
				$summed[$j] = true;
			}
		}
	}
	$result[] = array_map(function($value) use ($sum){return $value * $sum;}, $array);
}
header("content-type: text/plain");
var_dump($result);
?>
 
Zurück
Oben