Я пытаюсь изменить значения массива, если одно из значений несколько раз и изменит на null
дублирующиеся значения за исключением первого.PHP - многомерный массив - если такое же значение в массиве, измените все значения, кроме первого
У меня есть этот массив: массив $ =
array (size=6)
0 =>
array (size=3)
'id' => int 1
'data-time-start' => int 0
'data-time-end' => int 5
1 =>
array (size=3)
'id' => int 2
'data-time-start' => int 6
'data-time-end' => int 10
2 =>
array (size=3)
'id' => int 1
'data-time-start' => int 11
'data-time-end' => int 15
3 =>
array (size=3)
'id' => int 3
'data-time-start' => int 16
'data-time-end' => int 20
4 =>
array (size=3)
'id' => int 4
'data-time-start' => int 21
'data-time-end' => int 25
5 =>
array (size=3)
'id' => int 3
'data-time-start' => int 30
'data-time-end' => int 35
6 =>
array (size=3)
'id' => null
'data-time-start' => int 40
'data-time-end' => int 45
7 =>
array (size=3)
'id' => int 3
'data-time-start' => int 45
'data-time-end' => int 60
В этом примере я два раза 'id' = int 1
и трижды 'id' = int 3
. То, что я хотел бы сделать, это сохранить первый идентификатор, но установить другие повторяющиеся идентификаторы NULL и возвращает массив так:
array (size=6)
0 =>
array (size=3)
'id' => int 1
'data-time-start' => int 0
'data-time-end' => int 5
1 =>
array (size=3)
'id' => int 2
'data-time-start' => int 6
'data-time-end' => int 10
2 =>
array (size=3)
'id' => null
'data-time-start' => int 11
'data-time-end' => int 15
3 =>
array (size=3)
'id' => int 3
'data-time-start' => int 16
'data-time-end' => int 20
4 =>
array (size=3)
'id' => int 4
'data-time-start' => int 21
'data-time-end' => int 25
5 =>
array (size=3)
'id' => null
'data-time-start' => int 30
'data-time-end' => int 35
6 =>
array (size=3)
'id' => null
'data-time-start' => int 40
'data-time-end' => int 45
7 =>
array (size=3)
'id' => null
'data-time-start' => int 45
'data-time-end' => int 60
Пробовал с этим, но ничего не произошло ...
var_dump(setNulForDuplicatesInArray($array, 'id'))
function setNulForDuplicatesInArray($arr, $keyToFind)
{
$newArr = array();
for ($i = 0; $i < sizeof($arr); $i++) {
if (in_array($arr[$i], $newArr))
$newArr[$i][$keyToFind] = null;
else
$newArr[] = $arr[$i];
}
return $newArr;
}
массива() ...
Спасибо!
Хорошо для explainations но ваша функция возвращает «нулевой» – Zagloo
@Zagloo я не знаю, как вы используете это, но он отлично работает HTTP: //codepad.viper- 7.com/nQxABn – Ghost
oh sorry ... Я помещаю ваш код в функцию и возвращаю $ temp вместо $ array ... Спасибо за все :) !! – Zagloo