我正在尝试删除空格,并用数组中每个变量的' - '替换它。但是我只得到数组的最后一个变量。
我的代码:
<ul class="gap-items">
<?php
while ($query->have_posts()):
$query->the_post();
$post_type = get_post_type( get_the_ID() );
$key = 'field_5208f1f811702';
$value = get_field($key);
var_dump($value);
foreach ($value as $label) {
$label = strtolower($label);
$label = preg_replace("/[^a-z0-9_\s-]/", "", $label);
//Clean up multiple dashes or whitespaces
$label = preg_replace("/[\s-]+/", " ", $label);
//Convert whitespaces and underscore to dash
$label = preg_replace("/[\s_]/", "-", $label);
var_dump($label);
}
?>
<!-- Loop posts -->
<li class="item <?php echo $post_type ?> <?php echo $label ?>" id="<?php the_ID(); ?>" data-permalink="<?php the_permalink(); ?>">
所以$value
是一个数组。对于每个变量,我正在删除空格并用短划线替换它。我需要回显foreach函数之外的每个变量。我还尝试先破坏变量,但没有结果。这该怎么做?谢谢!
修改:第一个var_dump($value);
给了我一个数组:
array(2) {
[0]=>
string(8) "Option 3"
[1]=>
string(8) "Option 4"
}
var_dump($ label)给出:
string(8) "option-3"
string(8) "option-4"
我想回应一下: option-3 option-4
答案 0 :(得分:3)
你只得到最后一个,因为你的回声线:
<li class="item <?php echo $post_type ?> <?php echo $label ?>"></li>
在你的foreach循环后放置。因此,它使用为$label
和$post_type
设置的最后一个值。尝试将它放在循环中,这样每次循环遍历列表时都会生成回声。
您最终应该得到以下内容:
$value = get_field($key);
foreach ($value as $label) {
$label = strtolower($label);
$label = preg_replace("/[^a-z0-9_\s-]/", "", $label);
//Clean up multiple dashes or whitespaces
$label = preg_replace("/[\s-]+/", " ", $label);
//Convert whitespaces and underscore to dash
$label = preg_replace("/[\s_]/", "-", $label);
echo "<li class=\"item $post_type $label\"></li>";
}
答案 1 :(得分:1)
你太早关闭了foreach循环:
$value = get_field($key);
foreach ($value as $label) {
$label = strtolower($label);
$label = preg_replace("/[^a-z0-9_\s-]/", "", $label);
//Clean up multiple dashes or whitespaces
$label = preg_replace("/[\s-]+/", " ", $label);
//Convert whitespaces and underscore to dash
$label = preg_replace("/[\s_]/", "-", $label);
echo "<li class='item $post_type $label'></li>"
}
答案 2 :(得分:0)
使用str_replace函数,它接受一个字符串并替换所有出现的内容。
str_replace(' ','-',$label)
答案 3 :(得分:0)
您可以使用print_r()
。这将使用键和值打印整个数组。
所以在foreach
之后,你会写:
print_r($value);