Re: How to convert this PHP into JavaScript [message #173169 is a reply to message #173168] |
Fri, 25 March 2011 20:51 |
Denis McMahon
Messages: 634 Registered: September 2010
Karma:
|
Senior Member |
|
|
On Fri, 25 Mar 2011 15:22:42 -0400, Jerry Stuckle wrote:
> On 3/25/2011 2:59 PM, sheldonlg wrote:
>> On 3/24/2011 12:50 PM, Jerry Stuckle wrote:
>>> On 3/24/2011 10:23 AM, Oltmans wrote:
>>>> Hi PHP gurus, I hope you're doing well.
>>>>
>>>> I'm trying to convert a PHP script into JavaScript. I'm posting here
>>>> because I don't know much PHP and I hope someone among you can help.
>>>> Here is the PHP
>>>>
>>>> array(
>>>> 'abc' => '1 AND (2 OR
>>>> 3)', // Define how to
>>>> use the following criteria
>>>> 'def' => array('marketing_campaign_id', 'status', 'status'), //
>>>> Filter by these three criteria 'ghi' => array('eq', 'eq',
>>>> 'eq')
>>>> );
>>>>
>>>>
>>>> I need to convert above into JavaScript object which looks like
>>>>
>>>> {
>>>>
>>>> 'abc' : '1 AND (2 OR 3)'
>>>> }
>>>>
>>>>
>>>> but I don't know how to convert
>>>>
>>>> array('marketing_campaign_id', 'status', 'status')
>>>>
>>>> into equivalent JavaScript. Can someone please let me know how to
>>>> convert above into JavaScript? I will really appreciate your help in
>>>> this regard. Thanks!
>>>
>>> If you want to write javascript, you should ask in a javascript
>>> newsgroup.
>>>
>>>
>> No Jerry, not this time. He has a PHP array and he wants to use that
>> PHP array to generate a script in javascript. That means that knowledge
>> of BOTH is required.
>>
>> This is more properly asked here in this PHP group than in the
>> Javascript group. Everyone here also knows at least SOME Javascript.
>> The reverse is not true for the Javascript group. People there may not
>> know ANY PHP (though most seem to).
>>
>>
> No, Sheldon, he needs to be in comp.lang.javascript - where some of the
> people there know PHP.
>
> The first thing he needs is the appropriate javascript he needs - i.e.
> hand coding it. The generating the appropriate javascript from the
> array is simple.
>
> Now, if he would have said "I have this javascript I need to generate
> from this PHP array...", I would agree this is more appropriate.
It does depend on your viewpoint of what he's asking.
My viewpoint is that he has a server side php application that generates
a (two dimensional associative) array in php, and that he subsequently
wants to use the data in that array client side with javascript running
in a website viewers browser.
So, I see his problem as being "how do I pass the information contained
in this (two dimensional associative) array in my php script on the
server into the webpage that I am generating to send to the website
viewers client browser so that it can be used by scripts running in a
client side context on that web page?"
My solution is to create a JSON string representation of his (two
dimensional associative) array, and put that string into the heredoc
output in a way that the javascript will create a javascript object that,
whilst not technically a (two dimensional associative) array, is similar
enough to one in structure that he can access the data elements of it in
a manner that correlates to the keys in the original php (two dimensional
associative) array.
Doubtless there are other solutions, if his array always had the same
structure and format, he could write code to generate whatever javascript
representation of the array he wished[1], but the json approach means
that if the structure of his php generated array changes, the transfer of
that array into a javascript object is probably robust enough to not need
"tweaking", and the only changes he's likely to have to make to his
javascript will be how he uses the modified object, without having to
worry about restructuring the conversion from the php array to the
javascript object.
Rgds
Denis McMahon
[1] eg:
<?php
// write the php array '$data' to a js object 'phpData'
echo <<<EOJS
<script type="text/javascript">
var phpData;
phpData.abc = "{$data['abc']}";
phpData.def = ["{$data['def'][0]}", "{$data['def'][1]}",
"{$data['def'][2]}"];
phpData.ghi = ["{$data['ghi'][0]}", "{$data['ghi'][1]}",
"{$data['ghi'][2]}"];
</script>
EOJS;
?>
but this method has at least 2 limitations. It is tied to the given
structure of the $data array, and if any of the string values contains a
double quote character, the resulting javascript will be broken.
|
|
|