Как упорядочить массив по значениям bool в laravel livewirePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как упорядочить массив по значениям bool в laravel livewire

Сообщение Anonymous »

У меня есть массив, я хочу упорядочить этот массив по ключу «is_available», (сначала верно)
Я использую laravel 8 и компонент livewire

Код: Выделить всё

  0 => array:12 [▼
"id" => 1
"name" => "치킨 ~The Chicken~"
"is_available" => true
"nearest_customer_distance" => 4905.4423678942
"customers" => array:26 [▶]
]
1 => array:12 [▼
"id" => 2
"name" => "混ぜるな危険"
"is_available" => false
"customers" => array:10 [▶]
]
2 => array:12 [▼
"id" => 3
"name" => "Oh! Bánh mì"
"is_available" => true
"customers" => array:8 [▶]
]
3 => array:12 [▼
"id" => 5
"name" => "CHIJIMI DEVIL"
"is_available" => false
"customers" => array:44 [▶]
]
]
Я пробую

Код: Выделить всё

$newFranchiseList = $this->getFranchiseListActualPage();
$finalFranchiseList = array_merge($this->franchiseList, $newFranchiseList);
$finalFranchiseList = collect($finalFranchiseList)->sortBy('is_available')->reverse();
$this->franchiseList = $finalFranchiseList->toArray();
но я получаю заказ по идентификатору, на мой взгляд, это мое мнение

Код: Выделить всё

@forelse($franchiseList as $franchise)
@if($franchise['is_available'])
{{$franchise['name']}}
IS AVAILABLE
@else
{{$franchise['name']}}
NOT AVAILABLE
@endif
@empty

@endforelse
если я сделаю дамп($this->franchiseList), список будет показан в порядке is_available!
примечание: $this->franchiseList никогда не используется в компоненте, используется только последняя строка, если я не использую эту строку, список будет пустым
процесс сбора данных о компонентах
сначала в JavaScript вызовите прослушиватель Livewire

Код: Выделить всё

window.livewire.emit('franchises:selectedCoords', JSON.stringify(selectedCoords));
затем это принимается компонентом

Код: Выделить всё

public $selectedLatitude,
$selectedLongitude,
$perPage = 20,
$franchiseList = [],
$page = 1,
$totalFranchises = 0,
$isLoaded = false;
protected $listeners = [
'franchises:selectedCoords' => 'getCoords'
];

public function render()
{
return view('livewire.franchise-list');
}

public function getCoords($selectedCoords)
{
if ($selectedCoords) {
if (!empty($this->franchiseList)) {
$this->clearList();
}
$this->selectedLatitude = json_decode($selectedCoords, true)['lat'];
$this->selectedLongitude = json_decode($selectedCoords, true)['lng'];
}
$this->getFranchiseList();
}

public function getFranchiseList()
{
if ($this->selectedLatitude && $this->selectedLongitude) {
if (!$this->allFranchisesAreLoaded())
{
$newFranchiseList = $this->getFranchiseListActualPage();
$finalFranchiseList = array_merge($this->franchiseList, $newFranchiseList);
$this->franchiseList = collect($finalFranchiseList)->sortBy('is_available')->reverse()->toArray();
}
$this->isLoaded = true;
}
}
помните, что $this->franchiseList никогда не перезаписывается, то есть используется только один раз, в строке $this->franchiseList = Collect($finalFranchiseList)- >sortBy('is_available')->reverse()->toArray (); и если это не сделано, в конечном итоге он становится пустым массивом, поэтому другого $this->franchiseList в порядке, указанном в виде лезвия

Подробнее здесь: https://stackoverflow.com/questions/712 ... l-livewire
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»