Есть два массива с тонной данных в них. Они оба имеют одинаковые ключи, только разные значения. Пример:
Скажем, у вас есть два человека, и вы хотите сделать некоторые расчеты, основываясь на том, как они любят фрукты, но вы не хотите сравнивать одни и те же фрукты.
$person1 = array("Apple" => 10, "Pear" => 4, "Banana" => 8, "Pineapple" => 7, "Watermelon" => 7)
$person2 = array("Apple" => 6, "Pear" => 10, "Banana" => 6, "Pineapple" => 9, "Watermelon" => 3)
Теперь я хочу сравнить все значения, кроме случаев, когда фрукты одинаковы. Таким образом,
Person 1 Person 2
Apple = 10 Pear = 10
Apple = 10 Banana = 6
Apple = 10 Pineapple = 9
...
Banana = 8 Apple = 6
Banana = 8 Pear = 10
Banana = 8 Pineapple = 9
Обратите внимание, что я сделал Apple Banana, а затем Banana Apple для человека от 1 до 2, потому что рассчитанное значение может отличаться. Итак, если бы я сделал что-то вроде:
(Person 1 Key) * 2 + (Person 2 Key)
Тогда вы можете получить:
10 * 2 + 6 = 26 for Person1["Apple"] and Person2["Banana"]
, а затем
8 * 2 + 6 = 22 for Person1["Banana"] and Person2["Apple"]
В любом случае можно сделать это без использования вложенного массива или чего-то более быстрого.
Редактировать
$calculatedValues = array();
$len = sizeof($person1);
$inc = 0;
for($i = 0; $i < $len; ++$i){
for($j = 0; $j < $len; ++$j){
if($i != $j){
$calculatedValues[$inc] = $person1[i] * 2 + $person2[j];
inc++;
}
}
}