powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Удаление объекта из массива.
12 сообщений из 12, страница 1 из 1
Удаление объекта из массива.
    #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
Удаление объекта из массива.
    #38883283
php...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #38883284
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
php...,

у меня в $this->units имеется объект $unit. по этому и "==="
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #38883303
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а unset неподойдёт?
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #38883403
Незнаю... наверное несложно в каллбэк сделать дамп сравнения и посмотреть результат... тогда и можно будет делать выводы!;)
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #38883701
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эх..пришлось через foreach и unset извращаться.
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #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
Удаление объекта из массива.
    #38883816
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-k2-,

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

Так вообще не понятно, что попадает в $x и в $y
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #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
Удаление объекта из массива.
    #38883847
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kunaksergey,

а с твоими юнитами это работает? :)
...
Рейтинг: 0 / 0
Удаление объекта из массива.
    #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
Удаление объекта из массива.
    #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
12 сообщений из 12, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Удаление объекта из массива.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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