在PHP中,如何在两个变量名之间添加下划线

时间:2017-12-14 04:21:16

标签: php string

我有一些名为

的数据库字段
<TableLayout
    android:id="@+id/tl_search"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingStart="10dp"
    android:paddingEnd="10dp">
    <TableRow>
        <EditText
            android:id="@+id/et_search"
            android:layout_column="0"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:hint="Type here"/>
        <ImageButton
            android:id="@+id/ib_search"
            android:layout_column="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_search"
            android:contentDescription="Search image"/>
    </TableRow>
    <TableRow android:orientation="vertical">
        <TextView
            android:id="@+id/btn_previous"
            android:layout_column="0"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Previous"
            android:padding="5dp"
            android:background="#0d0f21"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="15sp"/>
        <Space
            android:layout_width="1dp"
            android:layout_height="match_parent"/>
        <TextView
            android:id="@+id/btn_clear"
            android:layout_column="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Clear"
            android:padding="5dp"
            android:background="#0d0f21"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="15sp"/>
        <Space
            android:layout_width="1dp"
            android:layout_height="match_parent"/>
        <TextView
            android:id="@+id/btn_search"
            android:layout_column="2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Search"
            android:padding="5dp"
            android:background="#0d0f21"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="15sp"/>
    </TableRow>

</TableLayout>

是的,它本来可以用另一种方式实现,但我不能改变实现。

假设我有一个名为$ lang的变量,其中包含&#34; de&#34;或&#34; en&#34;或&#34;它&#34;
现在,如果我想打印该值,我可以使用它:

picture1_en
picture2_en
...
picture1_de
picture2_de
...
picture1_it
picture2_it

问题在于PHP将下划线解释为变量名称的一部分(例如,它将其解释为&#34; $ i _&#34;)。我试图以很多疯狂的方式逃避下划线,但都没有工作。

当然,我可以做到

for($i=1; $i<=10; ++$i)
  echo $r["picture$i_$lang"];

但我想知道是否有办法迫使PHP解释&#34; _&#34;作为字符串文字,而不是变量名的一部分。

1 个答案:

答案 0 :(得分:6)

您可以使用花括号来分隔字符串中的变量名称边界(仅双引号)

$r["picture{$i}_{$lang}"];

$r["picture${i}_${lang}"];

http://php.net/manual/en/language.types.string.php

复杂(卷曲)语法

  

可以通过此语法包含任何具有字符串表示形式的标量变量,数组元素或对象属性。只需以与字符串外部相同的方式编写表达式,然后将其包装在{和}中。由于{无法转义,因此仅当$紧跟{时,才会识别此语法。使用{\ $获取文字{$。一些例子说清楚: