2012-02-03 2 views
0

Я пытаюсь написать некоторый php-код для обработки значения второго измерения массива на основе аналогичных значений первых значений измерения.Как обрабатывать второе измерение массива на основе аналогичного значения первого измерения?

Ниже приведен образец.

[0] => Array (
      [0] => 1 
      [1] => 0.091238491238491 
     ) 
[1] => Array (
      [0] => 2 
      [1] => 0.2221793635487 
     ) 
[2] => Array (
      [0] => 2 
      [1] => 0.10662717512033 
     ) 
[3] => Array (
      [0] => 4 
      [1] => 0.44354338998346 
     ) 
[4] => Array (
      [0] => 6 
      [1] => 0.2248243559719 
     ) 
[5] => Array (
      [0] => 6 
      [1] => 0.31764705882353 
     ) 
[6] => Array (
      [0] => 6 
      [1] => 0.15764625384879 
     ) 
[7] => Array (
      [0] => 6 
      [1] => 0.19160083160083 
     ) 
[8] => Array (
      [0] => 12 
      [1] => 0.31054875069499 
     ) 
[9] => Array (
      [0] => 12 
      [1] => 0.10915034227918 
     ) 
[10] => Array (
      [0] => 15 
      [1] => 0.32915461266474 
     ) 
//...........goes to 46000 elements 

Теперь то, что я хочу сделать это, если индекс 0 значения каждого массива похож, то я хочу, чтобы добавить значение индекса 1 в. Так, например, если 0 значений индекса для 4 массивов одинаковы, я хочу добавить значения индекса 1 для всех 4 массивов. Если для 0-го индекса есть уникальное значение, не добавляйте его ни с чем, просто сохраняйте значение индекса 1 и двигайтесь дальше.

Большое спасибо. Ghanshyam

+0

Просьба * формат * это массив. Невозможно понять, что такое измерение ... – deceze

+0

@deceze done, теперь мы можем посмотреть код :) –

+0

@deceze: пожалуйста, взгляните на это сейчас – Nerd

ответ

2
$added = array(); 
foreach ($array as $item) { 
    if (isset($added[$item[0]])) { 
     $added[$item[0]] += $item[1]; 
    } else { 
     $added[$item[0]] = $item[1]; 
    } 
} 
+0

Как вы проверяете, соответствуют ли значения 0-го индекса во всех элементы массива одинаковы или нет. Если они одинаковы, мы должны добавить соответствующие значения первого индекса для этих массивов. Например. [1] => Массив ([0] => 2 [1] => 0.2221793635487) [2] => Массив ([0] => 2 [1] => 0.10662717512033) Здесь мы должны добавить [ 1] [1] и [2] [1], поскольку [1] [0] и [2] [0] одинаковы. – Nerd

+0

Именно это и происходит. Он использует '[0]' index as * ключ * для другого массива. – deceze

+0

$ Добавлено [$ item [0]] = $ added [$ item [0]] + $ item [1]; Это дает мне Неустранимая ошибка: Неподдерживаемые типы операндов в строке on line <> Это потому, что мы пытаемся добавить массивы? $ added [$ item [0]] и $ item [1] - это массивы – Nerd

0
$p=0; 
$temp = $final_prod_ex[0][1]; 
for($x=0; $x<count($final_prod)-1; $x++){ 
    if($final_prod_ex[$x][0]==$final_prod_ex[$x+1][0]){ 
     $temp = $temp + $final_prod_ex[$x+1][1]; 
    } 
    else{ 
     $ans[$p] = $temp." ".$final_prod_ex[$x][0]; 
     $temp = $final_prod_ex[$x+1][1]; 
     $p++; 
    } 
} 

Наконец понял это после того, как много думать (я новичок в программировании) ... имя массива составляет $ final_prod_ex. Прокомментируйте это, если я смогу сделать это лучше. И извините @deceze. Я не мог понять ваше решение. Я знаю, что вы пытались передать значение одного массива в качестве индекса другому. Но каков сценарий, это значение не похоже на 0,1,2,3,4 .... Это похоже на 1,3,5,6,7,10. Мы пропускаем числа между ними. Возможно, я не понял твое решение. Поправьте меня, если я ошибаюсь. Спасибо за помощь.

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