Portál AbcLinuxu, 12. května 2025 15:39
define('BEDNA_KEY', 'bedna'); define('BEDNA_CLA', '1111'); define('BEDNA_TIT', '988777'); define('KNIHA_KEY', 'kniha'); define('KNIHA_CLA', '3447'); define('KNIHA_TIT', '537'); define('SKLO_KEY', 'sklo'); define('SKLO_CLA', '78'); define('SKLO_TIT', '177'); $arr1 = array(BEDNA_KEY, KNIHA_KEY, SKLO_KEY); $array = array(); foreach ($arr as $key => $value){ $array[$key] = array('cla' => ???, 'tit' => ???); //nevím jak s tímto řádkem hnout } /*Potřebuji takto nadefinovat pole tím cyklem*/ $array = array(BEDNA_KEY => array('cla' => BEDNA_CLA, 'tit' => BEDNA_TIT), KNIHA_KEY => array('cla' => KNIHA_CLA, 'tit' => KNIHA_TIT), SKLO_KEY => array('cla' => BEDNA_CLA, 'tit' => SKLO_TIT));
<?php define('BEDNA_KEY', 'bedna'); define('BEDNA_CLA', '1111'); define('BEDNA_TIT', '988777'); define('KNIHA_KEY', 'kniha'); define('KNIHA_CLA', '3447'); define('KNIHA_TIT', '537'); define('SKLO_KEY', 'sklo'); define('SKLO_CLA', '78'); define('SKLO_TIT', '177'); function get_constant_base_name($val) { $defined_constants=get_defined_constants(true); foreach ($defined_constants['user'] as $const_name => $value) { if ($value == $val && substr($const_name, -4) == '_KEY') { return substr($const_name, 0, -4); } } return NULL; } $arr1 = array(BEDNA_KEY, KNIHA_KEY, SKLO_KEY); $new_array = array(); foreach ($arr1 as $value){ if ($key = get_constant_base_name($value)) { $new_array[$value] = array( 'cla' => constant($key.'_CLA'), 'tit' => constant($key.'_TIT') ); } } print_r($new_array); ?>Jeden komentár k tomu - musíš si v tomto prípade dávať pozor na názvy konštánt, pretože sa môže stať, že budeš mať definované 2 konštanty
*_key
s rovnakou hodnotou, napr.:
define('BEDNA_KEY', 'bedna'); define('MALA_BEDNA_KEY', 'bedna');tak v tomto prípade nemáš možnosť deterministicky určiť o ktorú z konštánt sa jedná - vhodnejšou voľbou je potom definovať
$arr1
ako $arr1 = array('BEDNA', 'KNIHA', 'SKLO');
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.