Portál AbcLinuxu, 3. prosince 2025 10:31
$array = array('aaa' => array('a' => 'a-aaa', 'b' => 'b-aaa'),
'bbb' => array('a' => 'a-bbb', 'b' => 'b-bbb'),
'ccc' => array('a' => 'a-ccc', 'b' => 'b-ccc'),
'ddd' => array('a' => 'a-ddd', 'b' => 'b-ddd'),
'eee' => array('a' => 'a-ccc', 'b' => 'b-eee'));
Zkouším získat klíč podle zadaného údaje, Zkoušel jsem to
echo array_search('a-bbb', $array);
i takto
echo array_search('a-bbb', array($array));
ale vůbec nic mi nejde. Poradí někdo? Díky
$stmt = $db->prepare('SELECT key FROM table WHERE co = ?;');
$stmt->execute(array('a-aaa'));
$status = $stmt->fetch();
echo $status['key'];
zkoušel jsem i tohle
$stmt = $db->prepare('SELECT key FROM table WHERE co = ?;');
$stmt->execute(array('a-aaa'));
$status = $stmt->fetchColumn();
echo $status['key'];
ale taky nic. Když dám var_dump($status); tak to vrací jen "bool(false)". Když dám místo key hvězdičku, tak to funguje...
Vydí tam někdo nějakou chybu? Díky
Klíč hledám podle hodnoty proto, jelikož znám daný kousek české url ale neznám fyzicky us název souboru.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key FROM define WHERE co = a-aaa' at line 1
ale žádnou chybu nevidím..
Toto je přesně případ, proč raději vše uvozovkuji, těmi uvozovkami, které dané entitě v daném DBE přísluší. minimálně je třeba použít lepší názvy, tedy key doplnit o to co je to za key, třeba userLoginKey nebo book_category_key .
Uvozovkování předchází i problému, kde se vytvoří nové rezervované slovo, ale zas to pro někoho znepřehledňuje dotazy.
Zadej 'SELECT `key` FROM `table` WHERE `co` = ?;' (pro MySQL) a už to pojede
(Pro PostgreSQL by to bylo něco jako: 'SELECT "key" FROM "table" WHERE "co" = ?;',
pro M$SQL myslím něco jako 'SELECT [key] FROM [table] WHERE [co] = ?;').
foreach a in $array {
echo array_search('a-bbb', $a);
}
(pseudokód)
Pro víc polí to bude pomalé, pak bych asi uvažoval o nějaké vhodnější struktuře (strom, hashtable).
$source = array('aaa' => array('a' => 'a-aaa', 'b' => 'b-aaa'),
'bbb' => array('a' => 'a-bbb', 'b' => 'b-bbb'),
'ccc' => array('a' => 'a-ccc', 'b' => 'b-ccc'),
'ddd' => array('a' => 'a-ddd', 'b' => 'b-ddd'),
'eee' => array('a' => 'a-eee', 'b' => 'b-eee'));
$output=''; // index pole pro nalezenou hodnotu
$find = 'a-eee'; // hledana hodnota
array_walk(array_keys($source),create_function('$value, $key,$param', 'in_array($param[1], $param[0][$value])? $param[2] = $value: "";'),array($source,$find,&$output));
echo $output;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.