简体   繁体   中英

How to get all php array index from javascript?

I have a php file where I saved all language string. This is the content:

function lang($phrase)
{
    static $lang = array(
        'step_one' => 'First step',
        'step_two' => 'Second step',
         ... and so on ...
    );
    return $lang[$phrase];
}

Essentially, when I load a javascript file I want store all array index in a variable like this:

var Lang = <?php echo json_encode(lang()); ?>;

this code line is inserted in a script, this script is available in a php file. Now before of execute this line I have imported the php file where all string translation is available. What I'm trying to achieve, is get all index of this array, in the variable Lang . Actually I can load a single string traduction from php like this:

lang('step_one');

but how I can save this array in javascript variable?

You can use array_keys to retrieve all array keys. To do that you need your function to return the whole array on request. You can do that with leaving the argument ( $phrase ) empty and do an if condition with empty in your lang function. You also need to set a default value for $phrase in your function to not raise any errors if you don't pass an argument to the function.

echo json_encode(array_keys(lang());

And the function:

function lang($phrase = "")
{
    static $lang = array(
        'step_one' => 'First step',
        'step_two' => 'Second step',
         ... and so on ...
    );

    if(empty($phrase)) {
        return $lang;
    } else {
        if(isset($lang[$phrase])) { //isset to make sure the requested string exists in the array, if it doesn't - return empty string (you can return anything else if you want
            return $lang[$phrase];
        } else {
            return '';
        }
    }
}

I also added isset to make sure the requested element exists in your language array. This will prevent raising warnings.

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