内爆和爆炸的数组

时间:2018-01-11 14:40:12

标签: php arrays

我有以下数组。

 $implodeArray = implode(',',$testArray);

array = array(12869438,12869439);

的必需输出

我使用了以下代码。

Array to string conversion

它给了我警告

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:circle="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SampleActivity">

<com.example.logan.rotatingwheelcontrol.CircleLayout
    android:id="@+id/circle_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/selected_textView"
    android:layout_gravity="center_horizontal" >

    <include layout="@layout/menu_items" />
</com.example.logan.rotatingwheelcontrol.CircleLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/circle_layout"
    android:layout_alignLeft="@id/circle_layout"
    android:layout_alignRight="@id/circle_layout"
    android:layout_alignTop="@id/circle_layout">

    <com.example.logan.rotatingwheelcontrol.CircleImageView
        android:id="@+id/center_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/circle"
        android:layout_centerInParent="true"
        android:elevation="2dp"
        android:src="@drawable/ic_cloud" />

</RelativeLayout>

<TextView
    android:id="@+id/selected_textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="50dp"
    android:textAppearance="?android:attr/textAppearanceLarge" />

我应该如何获得所需的输出数组?

2 个答案:

答案 0 :(得分:1)

使用explode将字符串拆分为两部分并获得第二部分

$res = array_map(function($x) { return explode('_', $x)[1]; },
                 $arr['deselected_attachment_ids']);
print_r($res);

demo

答案 1 :(得分:0)

您可以让preg_replace()为您遍历数组并删除不需要的部分。虽然正则表达式并不以快速着称,但它是一种直接的单功能解决方案。

代码:(Demo

$array=['deselected_attachment_ids'=>['16883477_12869438','16883478_12869439']];
$result=preg_replace('/^\d+_/','',$array['deselected_attachment_ids']);
var_export($result);

输出:

array (
  0 => '12869438',
  1 => '12869439',
)

或者您可以使用foreach循环explode() :( Demo

$array=['deselected_attachment_ids'=>['16883477_12869438','16883478_12869439']];
foreach($array['deselected_attachment_ids'] as $v){
    $result[]=explode('_',$v)[1];
}
var_export($result);
// same result

最后,如果您不想使用正则表达式,并且您不希望在每次迭代时生成临时数组(来自explode()调用),则可以使用substr()strpos()

$array=['deselected_attachment_ids'=>['16883477_12869438','16883478_12869439']];
foreach($array['deselected_attachment_ids'] as $id){
    $result[]=substr($id,strpos($id,'_')+1);
}
var_export($result);