Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtracja tablicy na podstawie drugiej
Forum PHP.pl > Forum > PHP
markonix
Korzystam z ActiveRecords i chciałbym filtrować tablice danych przez wykonaniem INSERT / UPDATE aby wyszukać kolumny które nie istnieją w tabeli.

Zastanawiam się czy jest coś wbudowanego w PHP.

Mam tablice $columns = array('id', 'name'); oraz $data = array('id' => '1', 'name' => 'abc', 'submit' => 'wyślij');

Jak widać formularz wysłał też wartość przycisku i jeżeli wstawię bezpośrednio do zapytania mam error.

Oczywiście prosta pętla załatwi sprawę ale:
1) czy ogólnie może ktoś ma zastrzeżenia co do samego rozwiązania?
2) no i co do samego problemu może jest już jakaś funkcja w PHP, znalazłem array_intersect ale nie zadziała dla zwykłej tablicy i asocjacyjnej?
nospor
Cytat
Jak widać formularz wysłał też wartość przycisku i jeżeli wstawię bezpośrednio do zapytania mam error.
A kto ci kaze ten submit wkładać do tablicy z danymi? Nie kumam...
markonix
Specjalnie dałem "submit" aby można się było domyśleć..
Dane lecą bezpośrednio z formularza.
ano
Najprościej:
  1. $columns = array('id', 'name');
  2. $data = array('id' => '1', 'name' => 'abc', 'submit' => 'wyślij');
  3.  
  4. $columns = array_flip($columns);
  5. $filtered = array_intersect_key($data, $columns);
  6.  
  7. // i teraz $filtered = array('id' => '1', 'name' => 'abc';
markonix
Tak, też sprytne rozwiązanie. Choć dwie operacje to już pewnie wydajnościowo będzie zbliżone do foreach filtrującego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.