我有一些名为
的数据库字段<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;作为字符串文字,而不是变量名的一部分。
答案 0 :(得分:6)
您可以使用花括号来分隔字符串中的变量名称边界(仅双引号)
$r["picture{$i}_{$lang}"];
或
$r["picture${i}_${lang}"];
http://php.net/manual/en/language.types.string.php
复杂(卷曲)语法
可以通过此语法包含任何具有字符串表示形式的标量变量,数组元素或对象属性。只需以与字符串外部相同的方式编写表达式,然后将其包装在{和}中。由于{无法转义,因此仅当$紧跟{时,才会识别此语法。使用{\ $获取文字{$。一些例子说清楚: