Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Удаление объекта из массива. / 12 сообщений из 12, страница 1 из 1
18.02.2015, 18:28
    #38883246
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
Не могу удалить из массива объектов нужный объект:

Код: php
1.
2.
3.
4.
function rem (Unit $unit){
$this->units=array_udiff( $this->units,array($unit) ,function( $a, $b ){ 
									return ($a===$b)?0:1;
													}); 


где $this->units -это массив объектов типа Unit.
...
Рейтинг: 0 / 0
18.02.2015, 19:16
    #38883283
php...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
...
Рейтинг: 0 / 0
18.02.2015, 19:20
    #38883284
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
php...,

у меня в $this->units имеется объект $unit. по этому и "==="
...
Рейтинг: 0 / 0
18.02.2015, 19:50
    #38883303
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
а unset неподойдёт?
...
Рейтинг: 0 / 0
18.02.2015, 23:13
    #38883403
Удаление объекта из массива.
Незнаю... наверное несложно в каллбэк сделать дамп сравнения и посмотреть результат... тогда и можно будет делать выводы!;)
...
Рейтинг: 0 / 0
19.02.2015, 11:31
    #38883701
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
эх..пришлось через foreach и unset извращаться.
...
Рейтинг: 0 / 0
19.02.2015, 12:07
    #38883764
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
кто бы мне этот результат объяснил :( чудес то не бывает
Код: php
1.
2.
3.
4.
$array1 = array(1,2,3,4,5);
$array2 = array(5,6,7,3,4);	
$diff_arrays = array_udiff($array1, $array2, function( $x, $y ){ return ($x==$y)?0:1;});	
var_dump($diff_arrays); //array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [4]=> int(5) }
...
Рейтинг: 0 / 0
19.02.2015, 12:35
    #38883816
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
-k2-,

закинул в анонимную функцию
Код: php
1.
echo "x=$x y=$y<br>"; 

Так вообще не понятно, что попадает в $x и в $y
...
Рейтинг: 0 / 0
19.02.2015, 12:43
    #38883833
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
а вот так работает правильно:

Код: php
1.
2.
3.
4.
5.
6.
7.
  if ($x < $y) {
        return -1;
    } elseif ($x > $y) {
        return 1;
    } else {
        return 0;
    }
...
Рейтинг: 0 / 0
19.02.2015, 12:49
    #38883847
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
kunaksergey,

а с твоими юнитами это работает? :)
...
Рейтинг: 0 / 0
19.02.2015, 13:00
    #38883871
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
kunaksergeyа вот так работает правильно:
Код: php
1.
2.
3.
4.
5.
6.
7.
  if ($x < $y) {
        return -1;
    } elseif ($x > $y) {
        return 1;
    } else {
        return 0;
    }


и еще, получается результат, возвращаемый этой функцией, влияет на входные параметры следующей итерации?
...
Рейтинг: 0 / 0
19.02.2015, 13:39
    #38883933
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление объекта из массива.
-k2-,

С юнитами вот так заработало:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public function removeUnit( Unit $unit ) {
    $this->units = 
            array_udiff( 
	            $this->units, 
		    array( $unit ),
		    function( $a, $b ) { 
		            return ( $a === $b ) ? 0 : -1;
		    }
	    );
}


Рано чувак foreach 'ем начал гонять :)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Удаление объекта из массива. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]