gpt4 book ai didi

javascript - 在 PHP 循环中调用 js 函数,同时将 php 变量作为参数传递给其中一个函数

转载 作者:行者123 更新时间:2023-11-29 21:33:13 26 4
gpt4 key购买 nike

好的,所以已经创建了两个 javascipt 函数,我想在 php 循环中调用它们,同时将 php 变量作为参数传递给第二个函数

addElements($filePath)

这个 filePath 变量必须是内循环中的最后一个,我猜这样写不会从第一个循环中获取第一个变量

这是我想要的以及到目前为止写的:

                <script>                
<?php foreach( glob( 'posts/*' ) as $filePath ){
//createPost(); call js function declared in header
foreach( glob( $filePath.'/*' ) as $filePath ){
//addElements($filePath) call second hs function declared in header here i pass the last $filePath from the second loop as parameter
}

}?>
</script>

再次尝试还是不行

<script>                
<?php foreach( glob( 'posts/*' ) as $filePath ){
//createPost(); call js function declared in header
echo 'createPost()';
foreach( glob( $filePath.'/*' ) as $filePath ){
//addElements($filePath) call second hs function declared in header here i pass the last $filePath from the second loop as parameter
echo 'addElements('.$filePath.')';
}

}?>

最佳答案

PHP 仅在服务器端执行,因此您不能让 PHP 循环执行 javascript 函数(javascript = 客户端)。但是,您可以在服务器上生成 javascript 代码,它将在客户端执行。

所以简单的解决方案就是写这样的东西:

<script>                
<?php
foreach( glob( 'posts/*' ) as $filePath ){
echo 'createPost();'; // call js function declared in header
foreach( glob( $filePath.'/*' ) as $filePath ){
echo 'addElements("'.$filePath.'");'; // call second hs function declared in header here i pass the last $filePath from the second loop as parameter
}
}
?>
</script>

它会生成类似这样的东西:

createPost();
addElements('filepathA');
addElements('filepathB');
addElements('filepathC');
createPost();
addElements('filepathD');
addElements('filepathE');
// ...

如您所见,这里没有循环。另一种解决方案是在服务器端创建一个数据数组,并使用 json_encodephp 函数来获取可在客户端使用的 javascript 数据:

    <?php 
$results = [];
foreach( glob( 'posts/*' ) as $filePath ){
$subDirs = [];
foreach( glob( $filePath.'/*' ) as $filePath ){
$subDirs[] = $filePath;
}
$results[] = [
'dir' => $filePath,
'subDirs' => $subDirs
];
}
echo 'var data = ' . json_encode($results) . ';';
?>

你现在有了一个可以像往常一样使用的 javascript 数组:

for (var i = 0; i < data.length; i++){
createPost();
for (var j = 0; j < data[i].subDirs.length; j++){
addElements(data[i].subDirs[j]);
}
}

关于javascript - 在 PHP 循环中调用 js 函数,同时将 php 变量作为参数传递给其中一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com