简体   繁体   中英

How to get values for a dynamically generated array in php

I am generating a dictionary in PHP where key and values are added to the dictionary.

But I am not able to fetch the values back. I am using following code:

    //some code here
    while (($line = fgets($fileServices)) !== false) {
            //echo $line.'....................';
            if (strpos($line,'header') == false){
                    $serviceName=explode(",", $line)[0];
                    $RestartData=explode(",", $line)[1];
                    $StatusData=explode(",", $line)[2];
                    $serviceRestartMappingdict[$totalServices]= $serviceName.':'.$RestartData;
                    $serviceStatusMappingdict[$totalServices]= $serviceName.'_'.$StatusData;
                    $totalServices = $totalServices+1;
            }
    }
    $counter=0;
    //echo $serviceStatusMappingdict[0];
    fclose($fileServices);

    $counter=0;
    for ($i = 0; $i < count($serviceStatusMappingdict); ++$i){
            echo '<<<<<<<<<<<<<<<<<<<<<<<'.$serviceStatusMappingdict[$i].'>>>>>>>>>>>>>>>>>>>>>>>>>>>';
    }

If I do an echo like echo $serviceStatusMappingdict[0]; , I get the value but when I use a loop to access the data I do not get any value.

[EDIT] The problem is coming because of the '<' character. Get rid of them and it will work straight away

To answer the following comments that have appeared, the characters '<' and '>' in combination in html refer to an opening and closure of a tag. ex: <div>

The problem comes because the browser is trying intrepreting it as an unknow element and does not know what to do with it. If you inspect the html code of the page you'll be able to see that the information is actually there, just not properly rendered.

[EDIT] Following Umpert parial answer, I tried this and it does the expected behavior. Can we have more informations on why it does not work in your case :

<?php

 $array = array( '0' => "kakfa_ps -ef | grep kafka | grep server.properties",
            '1' => "zookeeper_ps -ef | grep zookeeper | grep zookeeper.properties",
            '2' => "schemaregistry_ps -ef | grep schema-registry | grep java",
            '3' => "influx_/sbin/service influxdb status | grep active | grep running",
            '4' => "mysql_/sbin/service mysql status | grep active | grep running",
            '5' => "cassandra_/sbin/service cassandra status | grep active | grep exited",
            '6' => "aerospike_/sbin/service aerospike status | grep active | grep running");
for($i=0;$i<count($array);++$i){
  echo '<<<<<<<<<<<<<<<<<<<<<<<'.$array[$i].'>>>>>>>>>>>>>>>>>>>>>>>>>>>';
}
 ?>

Same amount of '<' and '>' as in your OP. Just to make sure.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM