Portál AbcLinuxu, 4. prosince 2025 00:21
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.