note 125437 deleted from function.array-key-exists by crell

From: Date: Wed, 29 Jun 2022 20:45:51 +0000
Subject: note 125437 deleted from function.array-key-exists by crell
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-218773@lists.php.net to get a copy of this message
Note Submitter: alarido at almadialetica dot com dot br ---- /// it works like array_key_exists that can go deeper function in_array_deeply($keys, $multi) { $depths = array(); $fun = null; // inner, recursive function function in_fun($level, $arr_keys, $subject, &$depths) { // only if array if (is_array($subject)) { // if key exists if (array_key_exists($arr_keys[$level], $subject)) { // record depth and go deeper $depths[] = $arr_keys[$level]; in_fun($level+1, $arr_keys, $subject[$arr_keys[$level]], $depths); } } }; // in_fun(0, $keys, $multi, $depths); $srchd = implode('.',$keys); $found = implode('.',$depths); // return ($srchd==$found); } /// example usage $mapa = array('quadrada','comprida','amarela'); $cidade = array( 'redonda' => array( 'curta' => 'o seu filme' ), 'quadrada' => array( 'longa' => array( 'azul' => array('logo',2,'mais',2,'são',4), 'amarela' => array('então',3,'vezes',2,'são',6), 'verde' => array('senão',100,'dividido por',2,'é',50) ), 'extravagante' => array( 'vermelha' => 'chama atenção', 'vinho' => 'cor de uva', 'ocre' => 1255 ), 'comprida' => array( 'amarela' => 'brasilia dos mamonas', 'branca' => 'bandeira da paz', 'preta e branca' => 'peças do xadrez' ) ), 'oval' => array( 'conde' => 'lobo' ), 'plana' => array( 'curta' => array( 'azul' => array('e',2,'mais',2,'são',4), 'amarela' => array('sim',3,'vezes',2,'são',6), 'verde' => array('verdade',100,'dividido por',2,'é',50) ) ) ); $encontrou = in_array_deeply($mapa, $cidade); echo $encontrou; /// if the tree you search for exists, it will print out 'true'

« previous php.notes (#218773) next »